十.列表操作

目录

1.为什么需要列表

2.列表的特点

3.列表的创建

4.获取列表中指定元素的索引/元素

5.列表元素的查询操作

6.列表元素的判断操作

7.列表元素的添加操作

8.列表元素的删除操作

9.列表元素的修改操作

10.列表元素的排序操作

11.列表生成式(生成列表的公式)


1.为什么需要列表

·变量可以存储一个元素,而列表是一个‘大容器’可以存储N多个元素,程序可以方便的对这些数据进行整体操作

·列表相当于其他语言中的数组

·列表示意图

索引

-5-4-3-2-1
数据'hello''word'12398.6125
索引01234

2.列表的特点

·列表元素按顺序有序排序

·索引映射唯一个数据

·列表可以存储重复数据

·任意数据类型混存

·根据需要动态分配和回收内存


3.列表的创建

·列表需要使用中括号[],元素之间使用英文的逗号进行分割

·列表的创建方式

1.使用中括号

2.调用内置函数list()

lis=['hell',12,9.36,'word','甄子丹']
lis2=list(['hell',12,9.36,'word','甄子丹'])
print(lis)
print(lis2)


打印:
['hell', 12, 9.36, 'word', '甄子丹']
['hell', 12, 9.36, 'word', '甄子丹']


4.获取列表中指定元素的索引/元素

·获取列表中指定元素的索引

  1. index():
    1. 如查列表中存在n个相同元素,只返回相同元素中的第一个元素索引
    2. 如果查询的元素在列表中不存在,则会抛出ValueError
    3. 还可以在指定的strat和stop之间进行查找
1.
lis=['hell',12,9.36,'word','hell']
print(lis.index('hell'))


打印:
0



3.
lis=['hell',12,9.36,'word','hell']
print(lis.index('hell',2,5))  #在2-5id范围内查找'hell'

打印:
4

·获取列表中的单个元素

  1. 正向索引0到n-1   举例:lst[0]
  2. 逆向索引n到-1     举例:lst[-N]
  3. 指定索引不存在,抛出IndexError
lis=['hell',12,9.36,'word','hell']
print(lis[2])
print(lis[-2])


打印:
9.36
word

5.列表元素的查询操作

·获取列表中的多个元素

·语法格式:列表名:[start:stop:step]

切片操作

1.切片的结果:原列表片段的拷贝

lst=[10,20,30,40,50,60,70,80,90]
print(id(lst))
print(id(lst[1:5]))

打印:
2187797000832
2187800578432

   

2.切片的范围:[start:stop]

3.step默认为1:简写[start:stop]

lst=[10,20,30,40,50,60,70,80,90]
print(lst[1:5])

打印:
[20, 30, 40, 50]



---------------------------------------------
lst=[10,20,30,40,50,60,70,80,90]
print(lst[1:5:1])

打印:
[20, 30, 40, 50]



---------------------------------------
lst=[10,20,30,40,50,60,70,80,90]
print(lst[1:5:2])

打印:
[20, 40]

4.step为正数:

  1. [:stop:step]:切片的第一个元素默认是列表的第一个元素:从start开始往后计算切片
  2. [strat::step]:切片的最后一个元素默认是列表的最后一个元素:从start开始往后计算切片
lst=[10,20,30,40,50,60,70,80,90]
print(lst[:5:1])
print(lst[:5])
print(lst[:5:2])

打印:
[10, 20, 30, 40, 50]
[10, 20, 30, 40, 50]
[10, 30, 50]


-----------------------------

print(lst[1::1])
print(lst[1:])
print(lst[1::2])

打印:
[20, 30, 40, 50, 60, 70, 80, 90]
[20, 30, 40, 50, 60, 70, 80, 90]
[20, 40, 60, 80]

----------------------------------

print(lst[:])
print(lst[::2])

打印:
[10, 20, 30, 40, 50, 60, 70, 80, 90]
[10, 30, 50, 70, 90]

5.step为负数

  1. [:stop:step]:切片的第一个元素默认是列表的最后一个元素:从start开始往前计算切片
  2. [start::step]:切片的最后一个元素默认是列表的第一个元素:从start开始往前计算切片
  3. step:为负数时,索引不包含0
lst=[10,20,30,40,50,60,70,80,90]
print('原列表',lst)
print(lst[::-1])
print(lst[::-2])

打印:
原列表 [10, 20, 30, 40, 50, 60, 70, 80, 90]
[90, 80, 70, 60, 50, 40, 30, 20, 10]
[90, 70, 50, 30, 10]


-------------------------------------------

print('原列表',lst)
print(lst[:-7:-1])
print(lst[:-7:-2])

打印:
原列表 [10, 20, 30, 40, 50, 60, 70, 80, 90]
[90, 80, 70, 60, 50, 40]
[90, 70, 50]

-------------------------------------------

print('原列表',lst)
print(lst[-2::-1])
print(lst[-2::-2])

打印:
原列表 [10, 20, 30, 40, 50, 60, 70, 80, 90]
[80, 70, 60, 50, 40, 30, 20, 10]
[80, 60, 40, 20]


-----------------------
print('原列表',lst)
print(lst[6:0:-1])
print(lst[-1:3:-1])
print(lst[6:-1:-1])
print(lst[0:6:-1])

打印:
原列表 [10, 20, 30, 40, 50, 60, 70, 80, 90]
[70, 60, 50, 40, 30, 20]
[90, 80, 70, 60, 50]
[]
[]

6.列表元素的判断操作

·判断指定元素在列表中是否存在

元素 in 列表名

元素 not in 列表名

lst=[10,20,30,40,50,60,70,80,90]
print(10 in lst)
print(10 not in lst)


打印:
True
False

·列表元素的遍历

for 迭代变量 in 列表名:

        操作

lst=[10,20,30,40,50,60,70,80,90]
for a in lst:
    print(a)

打印:
10
20
30
40
50
60
70
80
90

7.列表元素的添加操作

·append():在列表的末尾添加一个元素

lst=[10,20,30]
lst.append(40)
print(lst)


打印:
[10, 20, 30, 40]

·extend():在列表的末尾至少添加一个元素,添加的对象需要也是一个列表

lst=[10,20,30]
lst2=[50,60]
lst.append(lst2) #lst2做为一个元素添加到列表的末尾
print(lst)

打印:
[10, 20, 30, [50, 60]]

-----------------------

lst=[10,20,30]
lst2=[50,60]
lst.extend(lst2)  #向列表的末尾一次性添加多个元素
print(lst)

打印:
[10, 20, 30, 50, 60]

·insert():在列表的任意位置添加一个元素

lst=[10,20,30,40,50]
lst.insert(1,90)  #在index为1的位置添加一个90
print(lst)


打印:
[10, 90, 20, 30, 40, 50]

·切片:在列表的任意位置添加至少一个元素

lst=[10,20,30,40,50]
lst2=[True,False,'hell']
lst[1:1]=lst2
print(lst)

打印:
[10, True, False, 'hell', 20, 30, 40, 50]

----------------------------------------

lst=[10,20,30,40,50]
lst2=[True,False,'hell']
lst[1:]=lst2
print(lst)

打印:
[10, True, False, 'hell']

----------------------------------------
lst=[10,20,30,40,50]
lst2=[True,False,'hell']
lst[:3]=lst2
print(lst)

打印:
[True, False, 'hell', 40, 50]

8.列表元素的删除操作

·remove():

  1. 一次删除一个元素
  2. 重复元素只删除第一个
  3. 元素不存在抛出ValueError
lst=[10,20,30,40,50,60,70,80,90]
lst.remove(50)
print(lst)

打印:
[10, 20, 30, 40, 60, 70, 80, 90]

·pop():

  1. 删除一个指定索引位置上的元素
  2. 指定索引不存在抛出IndexError
  3. 不指定索引,删除列表中最后一个元素
lst=[10,20,30,40,50,60,70,80,90]
lst.pop(5)
print(lst)

打印:
[10, 20, 30, 40, 50, 70, 80, 90]

---------------------------------

lst=[10,20,30,40,50,60,70,80,90]
lst.pop()
print(lst)

打印:
[10, 20, 30, 40, 50, 60, 70, 80]

·切片:一次至少删除一个元素

lst=[10,20,30,40,50,60,70,80,90]
new_lst = lst[1:3]  #只保留1-3的value,需要新的赋值
print(new_lst)

打印:
[20, 30]


--------------------------

lst[1:5]=[]   #删除1-5的value,不需要新的赋值
print(lst)

打印:
[10, 60, 70, 80, 90]

·clear():清空列表

lst=[10,20,30,40,50,60,70,80,90]
lst.clear()
print(lst)

打印:
[]

·del:

  1. del 列表名:删除整个列表
  2. del 列表名[id]:删除列表中指定的值
lst=[10,20,30,40,50,60,70,80,90]
del lst
print(lst)

打印:
NameError: name 'lst' is not defined. Did you mean: 'list'?

--------------------------------------------

lst = [i*2 for i in range(1,6)]
print(lst)
del lst[1]
print(lst)

打印:
[2, 4, 6, 8, 10]
[2, 6, 8, 10]

9.列表元素的修改操作

1.为指定索引的元素赋予一个新值

lst=[10,20,30,40,50,60,70,80,90]
lst[2]='hell'
print(lst)

打印:
[10, 20, 'hell', 40, 50, 60, 70, 80, 90]

2.为指定的切片赋予一个新值

lst=[10,20,30,40,50,60,70,80,90]
lst[2:4]=[300,400,500,600,700]
print(lst)

打印:
[10, 20, 300, 400, 500, 600, 700, 50, 60, 70, 80, 90]

10.列表元素的排序操作

·常见的两种方式

  1. 调用sort()方法,列中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse=True,进行降序排序
  2. lst=[10,29,18,56,34]
    print(lst)
    lst.sort()
    print(lst)
    lst.sort(reverse=False)
    print(lst)
    lst.sort(reverse=True)
    print(lst)
    
    打印:
    [10, 29, 18, 56, 34]
    [10, 18, 29, 34, 56]
    [10, 18, 29, 34, 56]
    [56, 34, 29, 18, 10]
    
  3. 调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变
  4. lst=[10,29,18,56,34]
    print(lst)
    
    new_lst=sorted(lst)
    print(new_lst)
    
    asc_lst=sorted(lst,reverse=False)
    print(asc_lst)
    
    desc_lst=sorted(lst,reverse=True)
    print(desc_lst)
    
    打印:
    [10, 29, 18, 56, 34]
    [10, 18, 29, 34, 56]
    [10, 18, 29, 34, 56]
    [56, 34, 29, 18, 10]
    
    


11.列表生成式(生成列表的公式)

·语法格式:

[自定义变量 for 自定义变量 in 可迭代对象)]

lst=[1,2,3,4,5]
a = [i for i in lst]
print(a)

打印:
[1, 2, 3, 4, 5]

-----------------------------

lst=[i for i in range(1,11)]
print(lst)

打印:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

·练习:列表的元素为2,4,6,8,10

lst = [i*2 for i in range(1,6)]
print(lst)

打印:
[2, 4, 6, 8, 10]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值