什么是列表
- 列表是一个有序的序列
- 列表中所有的元素放在 [ ] 中间,并用逗号分开
- 一个列表可以包含不同类型的元素,但通常使用时各个元素类型相同
特征
占用空间小,浪费内存空间少
声明列表变量
- 列表元素可以是任意数据类型,也可以混搭
- 可以数组嵌套数组,俗称二元数组
lis = [1, 2, 3, 1.11]lis = [\"a\", \"b\", \"c\"]lis = [True, False]lis = [{\"a\": 123}, {\"b\": 456}]lis = [[1], [2]]lis = [(1), (2)]lis = [1, 1.2, \"2\", True, {}, [], ()]
列表常见运算操作
运算符 +
# + 运算a = [1] + [2, 3, ] + [4, 5]print(a)b = [1, 2] + [\"3\", \"4\"]print(b)
# 输出结果[1, 2, 3, 4, 5][1, 2, \'3\', \'4\']
- 变量 b 是赋值两个不同数据类型的列表,虽然不会报错,但是 pycharm 会有 warning
- Expected type \’List[int]\’ (matched generic type \’List[_T]\’), got \’List[str]\’ instead
- 本来应该是 List[int],但后面用了 List[str] 代替,不过我也没 get 到这个 warn 想干嘛哈哈
运算符 *
# * 运算a = [1, 2] * 3print(a)
# 输出结果[1, 2, 1, 2, 1, 2]
索引(下标)取值
# 索引a = [1, 2, True, {\"name\": \"小菠萝\"}, [\"how\", \"hi\"]]print(a[0])print(a[2])print(a[-1])print(a[-2])# 输出结果1True[\'how\', \'hi\']{\'name\': \'小菠萝\'}
切片取值
- 和字符串一样,列表也可以切片
- 使用语法:列表[start : end : step],获取列表 列表 中在 [start, end) 范围的子字符串
- 注意范围 [start, end) 包含 start,不包含 end
- step 是步长,设为 n,则每隔 n 个元素获取一次
# 切片a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]print(a[:]) # 取全部print(a[0:]) # 取第一个元素到最后一个元素print(a[::-1]) # 逆序取全部元素print(a[2:5]) # 取第三个元素到第五个元素# 输出结果[1, 2, 3, 4, 5, 6, 7, 8, 9, 0][1, 2, 3, 4, 5, 6, 7, 8, 9, 0][0, 9, 8, 7, 6, 5, 4, 3, 2, 1][3, 4, 5]
切片赋值
注意:赋值的值也必须是列表,否则会报错TypeError: can only assign an iterable
# 切片赋值a = [\"1\", \"2\", \"3\"]print(a)a[:] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] # 切片获取所有元素,并重新赋值print(a)a[2:4] = [33, 44]print(a)a[2:4] = [] # 相当于去掉第 3、4 个元素print(a)a[:] = [] # 将 a 赋值为空列表print(a)# 输出结果[\'1\', \'2\', \'3\'][1, 2, 3, 4, 5, 6, 7, 8, 9, 0][1, 2, 33, 44, 5, 6, 7, 8, 9, 0][1, 2, 5, 6, 7, 8, 9, 0][]
关键字 in
- 通过关键字 in 检查列表中是否包含指定元素,返回 bool 值
- not in 则是取反
# in、not ina = [1, 2, True, {\"name\": \"小菠萝\"}, [\"how\", \"hi\"]]print(1 in a)print(3 in a)print({\"name\": \"小菠萝\"} in a)print(False not in a)# 输出结果TrueFalseTrueTrue
列表常见会用上的内置函数
len()
获取列表长度
# 获取列表长度print(len([1, 2, 3, 4]))# 输出结果4
max()
获取列表值最大的元素
最简单的栗子
# maxa = [1, 2, 3]print(max(a))# 输出解雇3
不同数据类型的栗子
# 其他栗子a = [1, 2, True, 3]print(max(a))a = [\"a\", \"b\", \"c\"]print(max(a))a = [[1, 2], [3, 4], [3, 5]]print(max(a))# 输出结果3c[3, 5]
同一个列表里包含不同数据类型的话呢?
a = [\"a\", \"b\", 1]print(max(a))# 输出结果print(max(a))TypeError: \'>\' not supported between instances of \'int\' and \'str\'
- 很明显,直接报错了,提示 > 运算符不支持在 int 、str 两种数据类型做运用
- 所以,使用 max、min 函数时,列表的数据记得是同一个数据类型哦
传多个参数的栗子
上面的栗子都是给 max 函数传递了单个参数
print(max(1, 2, 3))print(max([1, 2], [1, 2, 3]))# 输出结果3[1, 2, 3]
会返回最大的那一个参数值
查看 max() 源码
def max(*args, key=None): # known special case of max\"\"\"max(iterable, *[, default=obj, key=func]) -> valuemax(arg1, arg2, *args, *[, key=func]) -> valueWith a single iterable argument, return its biggest item. Thedefault keyword-only argument specifies an object to return ifthe provided iterable is empty.With two or more arguments, return the largest argument.\"\"\"pass
两种传值方式
max(iterable, *[, default=obj, key=func])
倘若只传一个列表,那么可以指定 default 参数值,当传的列表为空的时候,返回 default 值
max(arg1, arg2, *args, *[, key=func])
可以传多个参数,返回最大的参数值
min()
- 获取列表值最小的元素
- 跟 max() 就是反过来了,不再举栗子咯
list 常见方法
https://www.cnblogs.com/poloyy/p/15058981.html