AI智能
改变未来

Python – 基础数据类型 list 列表


什么是列表

  • 列表是一个有序的序列
  • 列表中所有的元素放在 [ ] 中间,并用逗号分开
  • 一个列表可以包含不同类型的元素,但通常使用时各个元素类型相同

特征

占用空间小,浪费内存空间少

声明列表变量

  • 列表元素可以是任意数据类型,也可以混搭
  • 可以数组嵌套数组,俗称二元数组
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

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Python – 基础数据类型 list 列表