列表基本操作

126 阅读2分钟

1. 创建列表:[ ]、list()

  1. []
a = []
a = [1, 2, 3]
  1. list():传入可迭代对象
a = list()  
a = list(range(2))  # [0, 1]
a = list((1, 2, 3))  # [1, 2, 3]
a = list("abc")  # ['a', 'b', 'c']
  • 判断是否为可迭代对象
from collections.abc import Iterable
isinstance(123, Iterable)  # True

2. 增加元素:append、insert、extend、+

  1. append():在列表末尾添加一个元素
a = []
a.append(1)
a.append('a')
a  # [1, 'a']
  1. insert():在列表某一位置插入一个元素
a.insert(0, 'hi')
a  # ['hi', 1, 'a']
a.insert(10, 0)  # 插入索引大于列表中最大的索引,直接插入到末尾
a  # ['hi', 1, 'a', 0]
  1. extend():连接两个列表,和 + 作用一样
b = [5, 6, 7]
a.entend(b)  # ['hi', 1, 'a', 0, 5, 6, 7]

3. 删除元素:del、pop、remove

  1. del():删除传入下标的元素,不返回删除值
del a[2]
a  # ['hi', 1, 0, 5, 6, 7]
  1. pop():默认删除最后一个元素,返回删除值
out = a.pop()  # 可以接收返回值
a  # ['hi', 1, 0, 5, 6]
out  # 7
a.pop(1)
a  # ['hi', 0, 5, 6]
  1. remove():传入要删除的元素,只会删除找到的第一个元素
a.remove('hi')
a  # [0, 5, 6]

4. 修改列表元素

列表中存放的是指向相应元素的地址,当修改列表元素时,只是将此元素指向新的元素地址。

a[0] = 2
a  # [2, 5, 6]

5. 查询元素:[ ]、index

  1. 利用下标访问元素
a[0]  # 2
a[-1]  # 6
  1. index() :查询指定元素的下标
a.index(2)  # 0

6. 列表操作:loop、+、*、比较、sort、reverse、max、min、sum

  1. 循环打印
for n in a:
    print(n)
# 2
# 5
# 6
for index, n in enumerate(a):
    print(f'no {index + 1} is {n}')
# no 1 is 2
# no 2 is 5
# no 3 is 6
  1. 基本运算
b = [1, 2, 3]
c = [4, 5, 6]
b + c  # [1, 2, 3, 4, 5, 6]
b * 2  # [1, 2, 3, 1, 2, 3]
b == c  # False,判断每个元素是否相等
  1. 排序
d = [2, 3, 1, 9, 6]
d.reverse()  # 反转列表,返回值为 None
d  # [6, 9, 1, 3, 2]
d = [2, 3, 1, 9, 6]
d.sort()  # 在原列表上对列表从小到大排序,返回值为 None
d  # [1, 2, 3, 6, 9]

d.sort(reverse=True)  # 在原列表上对列表从大到小排序,返回值为 None
d  # [9, 6, 3, 2, 1]
# 不改变原列表,返回原列表的排序
sorted(d)  # [1, 2, 3, 6, 9]
scores = [("zhangsan", 88), ("lisi", 98), ("wangwu", 86)]
scores.sort()
scores  # [('lisi', 98), ('wangwu', 86), ('zhangsan', 88)]
scores.sort(key=lambda n: n[1])  # 指定排序规则,n 为列表的迭代元素
scores  # [('wangwu', 86), ('zhangsan', 88), ('lisi', 98)]
d = [2, 3, 1, 9, 6]
max(d)  # 9
min(d)  # 1
sum(d)  # 21

7. 推导式:map

  1. 复制
d = [2, 3, 1, 9, 6]
e = d[:]  # e 和 d 所指向的地址不同,两个不同的列表
  1. 推导式
f = [n * n for n in d]
f  # [4, 9, 1, 81, 36]
g = [n * n for n in d if n % 3 == 0]
g  # [9, 81, 36]
  1. map
h = map(lambda n: n * n, d)
list(h)  # [4, 9, 1, 81, 36]