Python 列表与元组基础知识
列表 list 和 元组 tuple 是Python中最常见的两种数据结构
都是可以放置任意数据类型的有序集合
在大多数编程语言中,集合的数据类型必须一致,但在Python 的列表和元组中,无此要求
# list l = [1, "hello", 1.23, {"name": "xiaoming"}, [1, 2, 3], (1, 2, 3), {1, 2, 3, 2, 3}]
# tuple t = (1, "hello", 1.23, {"name": "xiaoming"}, [1, 2, 3], (1, 2, 3), {1, 2, 3, 2, 3})
列表是动态的 mutable
元组是静态的 immutable ,tuple的每个元素,指向的地址不变
l = [1,2,3] t = (1,2,3,l) l.append("hello") print(t) # 输出 (1, 2, 3, [1, 2, 3, 'hello'])
这里的元组t 有一个可变元素 l,l 值改变后,t 看似发生了改变,但是t 中元素指向的地址仍不变
list 和 tuple 内部实现都是 array
列表生成式
# 生成 0~10 的列表
# range(0,11) == range(11) ==range(0,11,1) # range(stop) -> range object # range(start, stop[, step]) -> range object l = [i for i in range(0, 11)] print(l) # 输出 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 生成 0~10 偶数
# 1. 取余数 l = [i for i in range(0, 11) if i % 2 == 0] print(l) # 2. 切片 l = [i for i in range(0, 11)][0::2] print(l) # 3. range(start, stop[, step]) l = [i for i in range(0, 11, 2)] print(l) # 输出都是 [0, 2, 4, 6, 8, 10]
列表去重
1. list --> set --> list
l = [1, 2, 2, 3, 3, 3, 4, 4, 4] l = list(set(l)) print(l) # 输出 [1, 2, 3, 4]
2. dict
l = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] counter = {} for i in l: # 判断此元素是否有多个 if i in counter: counter[i] += 1 else: counter[i] = 1 # key:value key 为去重后元素, value 为该元素出现次数 print(counter) print(list(counter.keys())) # 输出 # {1: 1, 2: 2, 3: 3, 4: 4} # [1, 2, 3, 4]