定义:用方括号 [] 包围、逗号分隔的有序集合,可空、可重复、元素可改。
lst = [1, 2, 3]
lst = [] # 空列表
lst = list((10, 20)) # 由元组转换
lst.append(obj) # 尾部加元素
lst.insert(i, obj) # 在索引 i 处插入,插入的元素成为新i,老i及后面的元素自动后移
lst.extend(iterable) # 把可迭代对象逐个加入尾部
lst.pop() # 删并返回最后一元素,不指定索引时删除最后一个元素
lst.pop(i) # 删并返回索引 i 处元素
lst.remove(value) # 按值删,只删第一个匹配项
lst.clear() # 清空全部列表
lst[i] = new_value # 直接赋值替换
lst[i:j] = iterable # 切片替换
len(lst) # 长度,元素个数
lst[i] # 按索引取值
lst[i:j:k] # 切片,可设步长
value in lst # 成员测试,返回布尔
lst.index(value) # 返回第一次出现的索引
lst.count(value) # 返回出现次数
lst.sort() # 就地升序
lst.sort(reverse=True) #就地降序
lst.reverse() # 就地逆序
“字典是‘键→值’的快速查找表,键不能改,值随便改;想按名字找东西,用它最快!”
定义:用花括号 {} 包围的 键:值 对集合,无序、可增删改查,键必须不可变(常用 str/int/tuple)。
d = {'name': 'Tom', 'age': 15}
d = {} # 空字典
d = dict(name='Tom', age=15) # 另一种写法
d['score'] = 98 # 无则增,有则改
d.update({'city': 'SH', 'age': 16}) # 一次加/改多个
print(d['name']) # Tom (键不存在会 KeyError)
print(d.get('city')) # SH (键不存在返回 None,不报错)
print('age' in d) # True 成员测试
print(len(d)) # 3 键值对个数
d.pop('city') # 删并返回对应值
d.popitem() # 随机删一对(3.10 前是“后进先出”)
del d['score'] # 直接删
d.clear() # 清空
for k in d: # 默认遍历键
print(k, d[k])
for k, v in d.items(): # 一起拿键和值
print(k, v)
keys = d.keys() # dict_keys(['name', 'age'])
values = d.values() # dict_values(['Tom', 16])
items = d.items() # dict_items([('name', 'Tom'), ('age', 16)])
class_room = {
1: ['Alice', 'Bob'],
2: ['Lucy', 'Tom']
}
class_room[1].append('Jack') # 改列表,字典本身没变键
定义:用圆括号 () 包围、逗号分隔的有序不可变集合,可空、可重复。
tup = (1, 2, 3)
tup = () # 空元组
tup = (42,) # 单元素必须带逗号
tup = tuple([10, 20]) # 由列表转换
不可进行原位增删改;任何改动均通过新建元组实现:
tup = tup + (40, 50) # 连接后生成新元组
与列表相同:
len(tup)
tup[i]
tup[i:j:k]
value in tup
tup.index(value)
tup.count(value)
new_list = list(tuple_obj)
new_tuple = tuple(list_obj)