目录
数据结构和序列
元组
- 固定长度,不可变的python对象序列
- 元组被创建后,各位置上的对象是无法修改的,但是元组中存储的对象其自身是可变的
- 可是使用+号连接元组生成更长的元组
- 将元组乘以整数,则会和列表一样,生成含有多份拷贝的元组
举例:
if __name__ == '__main__':
# 元组的创建
tup = 4, 5, 6
print(tup)
lst = [1, 2, 3, 4]
tup2 = tuple(lst) # 从list转换成tuple
# 元组对象内部的修改
tup3 = ("test", [1, 3, 4], "aaa")
tup3[1].append(10)
print(tup3)
元组拆包:
将元祖型的表达式赋值给变量,会对等号右边的值进行拆包
# 按照tuple的长度拆包赋值
tup4 = (1, 2, 3, 4)
a, b, c, d = tup4
print(a, b, c, d)
# 获取任意长度
a1, b1, *rest = tup4
print(a1, b1)
# 丢弃部分数据
a2, b2, *_ = tup4
print(a2, b2)
元组方法:只有一个count计算某个数值在元组中出现的次数
列表
- 列表的长度是可变的,内容是可以修改的
- 声明的方式用[]或者list函数
- 增加函数append和insert
- append直接追加到尾部
- insert插入到指定位置
- insert要比append计算代价更高,因为要内部移动元素为新元素提供空间
- 删除函数有pop和remove
- pop是将特定位置的内容移除
- remove会将定位到的第一个符合条件的值移除
- 列表的链接和联合,用+或者直接使用extend
- 用+号会创建一个新的列表
- 采用extend将会直接在列表后追加列表
- 排序
- 调用sort不会新建一个列表
- 切片
- 起始位置到结束位置
练习举例:
if __name__ == '__main__':
a = [1, 4, 2, 6, 4, 3, 7, 2]
a.append(10)
a.insert(1, 90)
# [1, 90, 4, 2, 6, 4, 3, 7, 2, 10]
print(a)
a.pop(2)
a.remove(1)
# [90, 2, 6, 4, 3, 7, 2, 10]
print(a)
# 连接和联合列表
b = [3, 4]
a = a + b
a.extend(b)
# [90, 2, 6, 4, 3, 7, 2, 10, 3, 4, 3, 4]
print(a)
# [2, 6, 4, 3]
b = a[1:5]# 取a中第1到第5个位置
# [90, 2, 6, 4, 3]
c = a[:5] # 取a中第0到第5个位置
# [4, 3, 7, 2, 10, 3, 4, 3, 4]
d = a[3:] # 取a中第3到结尾,包括第三个
# [3, 4, 3, 4] 负数表示从尾部开始索引
e = a[-4:]
# [2, 10, 3, 4]
f = a[-6:-2]
# [90, 6, 3, 2, 3, 3] 第三个参数是步长
g = a[::2]
# [4, 3, 4, 3, 10, 2, 7, 3, 4, 6, 2, 90] 反转列表
h = a[::-1]
字典
- 是一种键值对集合的数据结构
- 字典的值可以是任意的python对象,但key必须是不可变的对象,比如整数,浮点数,字符串,或者元组,这里有一个术语叫做哈希化,通过hash()函数可以检查一个对象是否可以哈希化
- 如果想用列表作为key,可以先将list转化为元组
常用方法:
- 访问内容