Python学习之路04——列表

  • 创建列表
  • 访问和修改列表
  • 列表中的常用方法
  • append、insert、extend
  • pop、remove、clear、del
  • count、index
  • reverse、sort
  • copy、深拷贝和浅拷贝
  • 列表分片
  • 列表上的常用操作符
  • 列表生成式


创建列表

list(iterable=(), /)
列表中可以存放不同类型的元素,使用 [] 创建列表
# 创建有元素的列表
>> L1 = [1,2,3,4,5]
>> L2 = [1,2,[1,2,3],'hello']

# 创建空列表
>> L3 = []
>> L4 = list()

访问和修改列表

列表元素的访问和修改与数组中的操作类似,可按下标索引访问
# 访问列表元素
>>> L1 = [1,2,3,[1,2,3]]  # 初始化列表
>>> L1[0]
1
>>> L1[3]
[1,2,3]
>>> L1[3][0]
1

# 修改列表元素
>>> L1[3] = 4
>>> L1
[1,2,3,4]

列表中的常用方法

append、insert、extend

append(self, object, /)
用于把单个对象添加到列表表尾

insert(self, index, object, /)
用于把单个对象添加到列表指定下标位置

extend(self, iterable, /)
用于把可迭代对象中的元素依次添加到列表表尾
>>> L1 = [1,2,3]
>>> L1.append([1,2,3])  
>>> L1
[1, 2, 3, [1, 2, 3]]
>>> L1.insert(0,'string')
['string', 1, 2, 3, [1, 2, 3]]
>>> L1.extend([1,2,3])
['string', 1, 2, 3, [1, 2, 3], 1, 2, 3]

pop、remove、clear、del

pop(self, index=-1, /)
用于删除指定下标的元素并返回此元素,默认删除表尾元素

remove(self, value, /)
用于按值删除列表中元素,若有多个同样的值,只删除第一个

clear(self, /)
用于清空列表

del方法可按下标删除列表中的单个元素,也可以直接删除整个列表
>>> L1 = [1,2,3,1,2,3,'1','2','3']
>>> L1.pop()
'3'
>>> L1.pop(0)
1
>>> L1.remove(2)
[3, 1, 2, 3, '1', '2']
>>> L1.remove(2)
>>> L1
[3, 1, 3, '1', '2']
>>> del L1[0]
>>> L1
[1, 3, '1', '2']
>>> L1.clear()
>>> L1
[]
>>> del L1
>>> L1
NameError: name 'L1' is not defined

count、index

count(self, value, /)
用于得到值在列表中出现的次数

index(self, value, start=0, stop=2147483647, /)
用于得到值在列表中的下标位置,搜索范围可设置
>>> L1 = [1,2,3,4,5,1,2,3,4,5]
>>> L1.count(2)
2
>>> L1.index(2)
1
>>> L1.index(2,2)
6

reverse、sort

reverse(self, /)
用于把列表元素反序

sort(self, /, *, key=None, reverse=False)
用于排序列表元素,默认升序,指定reverse参数为True可按降序排序
>>> L1 = [1,3,5,4,6,2]
>>> L1.sort()
>>> L1
[1, 2, 3, 4, 5, 6]
>>> L1.reverse()
>>> L1
[6, 5, 4, 3, 2, 1]

copy、深拷贝和浅拷贝

copy(self, /)
用于得到一个与原列表元素一样的新列表

使用分片和copy得到的是深拷贝
使用复制得到的是浅拷贝
>>> L1 = [1,2,3]
>>> L2 = L1.copy()
>>> L3 = L1[:]
>>> L4 = L1 
>>> L1==L2 and L1==L3 and L1==L4
True
>>> L1 is L2
False
>>> L1 is L3
False
>>> L1 is L4
True

列表分片

使用 L[start:end] 进行分片操作
: 左边是开始位置,右边是结束位置且不包含该位置
: 左边缺省表示从 0 开始,右边缺省表示到最后位置结束
: 两边都缺省表示全选
>>> L1 = [0,1,2,3,4,5]
>>> L1[1:4]
[1,2,3]
>>> L1[:4]
[0,1,2,3]
>>> L1[2:]
[2,3,4,5]
>>> L1[:]
[0,1,2,3,4,5]
>>> L1[1:5][2:]   # 表示进行两次切片操作,第一次得到[1,2,3,4]
[3,4]             # 第二次对[1,2,3,4]切片得到[3,4]

列表上的常用操作符

列表上的常用操作符有:+   *   in   not in
>>> L1 = [1,2,3]
>>> L2 = [4,5,6]
>>> L1 + L2
[1,2,3,4,5,6]
>>> L1 * 3
[1,2,3,1,2,3,1,2,3]
>>> 2 in L1
True
>>> 2 not in L1
False

列表生成式

# 生成包含1~20之间的偶数的列表
>>> [2*x for x in range(1,11)]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
# 生成包含整数1~10的平方的列表
>>> [x*x for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]