Python 列表内置函数用法

  通过 dir(list) 可查看列表包含的内置函数

1. append 添加元素

  list.append(obj)list += [obj] 相同

a = [1, 2, 3]
a += [4]
a.append(5)
print(a)

>>> [1, 2, 3, 4, 5]

2. clear 清空列表

  list.clear()list = [] 相同

a = [1, 2, 3]
a.clear()
print(a)

>>> []

3. copy 拷贝

  涉及浅拷贝和深拷贝
  浅拷贝如下 b = a,拷贝后 a 和 b 的地址相同,指向同一内存空间,修改其中一个内部数据,另一个也会一起被修改(包括传入函数时浅拷贝被修改)。
  深拷贝如下 c = a.copy(),此时 c 会开辟一个新的内存空间存储 a 中的数据,但可以发现虽然 a 和 c 的地址不同,修改前三个数据互不影响,但是 a[3] 和 c[3] 的地址相同,修改第四项二层列表内的数据依然会相互影响。
  个人理解:c 虽然开辟了新的内存空间存放数据,但是 a[3] 本身存放的是这个二层列表的地址,因此 a[3] 和 c[3] 指向的是同一个地址,修改数值自然会相互影响。使用 copy.deepcopy() 可以使内层也彻底深拷贝。

import copy

a = [1, 2, 3, [4, 5, 6]]
b = a
c = a.copy()
d = copy.deepcopy(a)
print('a: ', id(a))
print('b: ', id(b))
print('c: ', id(c))
print('a[3]: ', id(a[3]))
print('c[3]: ', id(c[3]))
print('d[3]: ', id(d[3]))

>>> 
a:  140296574785088
b:  140296574785088
c:  140296574786368
a[3]:  140296574785248
c[3]:  140296574785248
d[3]:  140296574784528

4. count 计数

a = [[1, 2, 3], [1, 2, 3]]
print(a.count([1, 2, 3]))

>>> 2

5. extend 添加可迭代对象

  list.extend(Iterable)list += Iterable 相同

a = [1, 2, 3]
a.extend([1, 2, 3, [4, 5, 6]])
print(a)

>>> [1, 2, 3, 1, 2, 3, [4, 5, 6]]

6. index 获取元素下标

  当有重复元素时只返回首个元素的下标,元素不存在直接报错。

a = [1, 2, 3, 1]
print(a.index(1))

>>> 0

7. insert 指定位置添加元素

a = [1, 2, 3]
a.insert(1, 10)
print(a)

>>> [1, 10, 2, 3]

8. pop 删除并返回指定位置元素

a = [1, 2, 3]
print(a.pop(1), a)

>>> 2 [1, 3]

9. remove 删除元素

  当有重复元素时只删除首个元素,元素不存在直接报错。

a = [1, 2, 3, 1]
a.remove(1)
print(a)

>>> [2, 3, 1]

10. reverse 翻转列表

  内层不会翻转

a = [1, 2, 3, [1, 2, 3]]
a.reverse()
print(a)

>>> [[1, 2, 3], 3, 2, 1]

11. sort 排序

  reverse=bool 控制排序方向;
  key 配合 lambda 函数选择排序的依据,例如 lambda x: x[1] 按每一项第二个元素大小排序,lambda x: len(x) 按每一项的长度排序。
  注意:a.sort() 当两项第一个元素相同时会依次比较后续元素 [1,3] 位置在 [1,7] 之前,而 a.sort(key=lambda x: x[0]) 仅比较第一个元素,相同时按原顺序排列。

a = [[2, 4], [1, 7], [2, 1], [1, 3]]
a.sort()
print(a)
a.sort(reverse=True)
print(a)
a.sort(key=lambda x: x[0])
print(a)
a.sort(key=lambda x: x[1])
print(a)

>>> 
[[1, 3], [1, 7], [2, 1], [2, 4]]
[[2, 4], [2, 1], [1, 7], [1, 3]]
[[1, 7], [1, 3], [2, 4], [2, 1]]
[[2, 1], [1, 3], [2, 4], [1, 7]]

猜你喜欢

转载自blog.csdn.net/weixin_43605641/article/details/126996165
今日推荐