Python3数据结构:列表list、元组tuple、字典dict、集合set介绍及使用
整理自公众号Python那些事文章
=====================================列表===========================================================
# 创建列表(list)
li = []
li2 = [4, 5, 6]
# 用append在列表最后追加元素
li.append(1) # li现在是[1]
# 用pop从列表尾部删除
li2.pop() # => 6 且li2现在是[4,5]
# 把6再放回去
li2.append(6) # li变回[4,5,6]
# 列表存取
li[0] # => 1
# 取出最后一个元素
li2[-1] # => 6
# 越界存取会造成IndexError
li[4] # 抛出异常IndexError
# 列表切片 li[1, 2, 4, 3]
li[1:3] # => [2, 4]
# 取到尾
li[2:] # => [4, 3]
# 从头取
li[:3] # => [1, 2, 4]
# 隔一定步长取
li[::2] # =>[1, 4]
# 倒排列表
li[::-1] # => [3, 4, 2, 1]
# 三个参数意义:
# li[始:终:步长]
# 用del删除任何一个元素
del li[2] # li [1, 2, 3]
# 删除列表:
# del li
# 列表可以相加
# 注意:li和li2的值都不变,可以用li3获取到新的列表
li3 = li + li2 # => [1, 2, 3, 4, 5, 6]
# 用extend拼接列表
li.extend(li2) # li现在是[1, 2, 3, 4, 5, 6]
# 用in测试列表是否包含值
1 in li # => True
# 用len取列表长度
len(li) # => 6
=====================================元组===========================================================
# 元组是不可改变的序列
tup = (1, 2, 3)
tup[0] # => 1
# tup[0] = 3 # 抛出TypeError
# 列表允许的操作元组大都可以
len(tup) # => 3
tup + (4, 5, 6) # => (1, 2, 3, 4, 5, 6)
tup[:2] # => (1, 2)
2 in tup # => True
# 可以把元组合列表解包,赋值给变量
a, b, c = (1, 2, 3) # 现在a是1,b是2,c是3
# 元组周围的括号是可以省略的
d, e, f = 4, 5, 6
# 交换两个变量的值
e, d = d, e # 现在d是5,e是4
=====================================字典===========================================================
# 用字典表达映射关系
empty_dict = {}
# 初始化的字典 字典中元素排列是无序的
filled_dict = {"one": 1, "two": 2, "three": 3}
# 用[]取值, []内填key值
filled_dict["one"] # => 1
# 用 keys 获得所有的键
list(filled_dict.keys()) # => ["three", "two", "one"]
# 用values获得所有的值。跟keys一样,要用list包起来,顺序也可能不同
list(filled_dict.values()) # => [3, 2, 1]
# 用in测试一个字典是否包含一个键
"one" in filled_dict # => True
1 in filled_dict # => False
# 访问不存在的键会导致KeyError
filled_dict["four"] # KeyError
# 用get来避免KeyError
filled_dict.get("one") # => 1
filled_dict.get("four") # => None
# 当键不存在的时候get方法可以设置返回的默认值
filled_dict.get("one", 2) # => 1
filled_dict.get("four", 2) # => 2
# setdefault方法只有当键不存在的时候插入新值
filled_dict.setdefault("five", 5) # filled_dict["five"]设为5
filled_dict.setdefault("five", 6) # filled_dict["five"]还是5
# 字典赋值
filled_dict.update({"four":4}) # => {"one": 1, "two": 2, "three": 3, "four": 4}
filled_dict["four"] = 4 # 另一种赋值方法
# 用del删除
del filled_dict["one"] # 从filled_dict中把one删除
=====================================集合===========================================================
# 用set表达集合
empty_set = set()
# 初始化一个集合,语法跟字典相似,无序。
some_set = {1, 1, 2, 2, 3, 4} # some_set现在是{1, 2, 3, 4}
# 可以把集合赋值于变量
filled_set = some_set
# 为集合添加元素
filled_set.add(5) # filled_set现在是{1, 2, 3, 4, 5}
# & 取交集
other_set = {3, 4, 5, 6}
filled_set & other_set # => {3, 4, 5}
# | 取并集
filled_set | other_set # => {1, 2, 3, 4, 5, 6}
# - 取补集
{1, 2, 3, 4} - {2, 3, 5} # => {1, 4}
# in 测试集合是否包含元素
2 in filled_set # => True