文章目录
列表 list
操作
基本序列操作
索引(正负)、切片、遍历元素、查找(in或index)
li = [[1, [2, 3], 4], [5, 6], [7]]
# 索引(正负)
print(li) # [[1, [2, 3], 4], [5, 6], [7]]
print(li[0]) # [1, [2, 3], 4]
print(li[-1]) # [7]
print(li[-2]) # [5, 6]
print(li[0][1][1]) # 3
# 切片
li = list(range(10))
print(li[0:3]) # 0,1,2
print(li[:3]) # 0,1,2
print(li[1:]) # [1, 2, 3, 4, 5, 6, 7, 8, 9] 从1开始,到最后
print(li[-2:]) # [8, 9] 从倒数第二个开始
print(li[::2]) # [0, 2, 4, 6, 8] 带步长
print(li[6:2:-1]) # [6, 5, 4, 3]
# 遍历
for x in li:
print(x)
li = ['a', 'b', 'c']
for i, x in enumerate(li): # 索引, 元素
print(i, x)
# 查找
li = ['a', 'b', 'c']
x = 'a'
print(x in li) #True
print(li.index(x)) #0
增、删、改
li = [[1, [2, 3], 4], [5, 6], [7]]
# 增
li = [1,[2,3]]
li.append([[4,5],6]) # [1, [2, 3], [[4, 5], 6]] 末尾,作为一个整体添加
li.insert(0, [[8,9],10]) # 任意位置,必须有参数index
li.extend([[4,5],6]) # [1, [2, 3], [4, 5], 6] 末尾,作为元素添加
# 删
# del
del li[0]
# pop
x = li.pop() # 末尾
x = li.pop(0) # 任意位置
# remove 最慢(匹配值)
li.remove([[8,9],10])
print(li)
# 改
li[-1] = 8
拼接(+)、相乘
# 拼接
li1 = [1,2,3]
li2 = [(4,5),[6,7]]
print(li1+li2) # [1, 2, 3, (4, 5), [6, 7]]
print(li1.extend(li2)) # [1, 2, 3, (4, 5), [6, 7]]
# 相乘
print(li1*3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
li = [0]*10
print(li) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
排序、反转、比较、复制
特殊操作
构造列表:列表解析+一行代码
# 偶数的平方
li = [x**2 for x in range(10) if x%2==0]
print(li) # [0, 4, 16, 36, 64]
元组tuple
- 元组由逗号标识,而不是小括号
sex = ()
sex = (male,) # 元组创建,当只有一个元素时,必须加逗号
操作
基本序列操作
索引(正负)、切片、遍历元素、查找(in)
同list
增、删、改
元组没有增删改,只能创建新元组:可以先转为list,再增删改,再转为tuple
拼接(+)、相乘
# 拼接
t1 = (1,2,3)
t2 = ('a','b','c')
print(t1+t2) # (1, 2, 3, 'a', 'b', 'c')
# 相乘
print(t1*3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
排序、反转、比较、复制
list与tuple
两者都是都是一个可以放置任意数据类型的有序集合,元素类型不需要一致。
有序:内部有序,插入顺序与输出一致
列表 | 元组 | |
---|---|---|
性质 | 长度不固定 | 长度固定(初始化时),不能增删改 |
存储与性能 | 存储略大:存储指针,python会额外分配多一点空间,保证了其操作的高效性(增加 / 删除的时间复杂度均为 O(1)) 性能略逊:初始化创建花的时间更多 | 存储更小:存储空间固定 性能更优 |
索引 切片 嵌套 | ✓ | ✓ |
tuple 与 垃圾回收机制
对静态数据做一些资源缓存:
- 对于一些静态变量,比如元组,如果它不被使用并且占用空间不大时,Python 会暂时缓存这部分内存。
- 下次我们再创建同样大小的元组时,Python 就可以不用再向操作系统发出请求,去寻找内存,而是可以直接分配之前缓存的内存空间
list 方法、内置函数总结
- 永久性函数:
x.fun()
fun(x)- 暂时性函数:必须返回赋值才能变为永久性
x = x.fun()
x = fun(x)
list的方法 | 永久 |
---|---|
list.append(x) | √ |
list.insert(index, x) | √ |
x = list.pop(index=-1) | √ |
list.remove(x) | √ |
内置函数 | 永久 |
---|---|
li = sorted(li) | × |
iterator = reversed(li) ,返回迭代器 | × |