Python列表,元组,字典,集合的区别
列表 | 元组 | 集合 | 字典 | |||||||||||||||
英文 | list | truple | set | dict | ||||||||||||||
定义 | 用于存储任意数目、任意类型的数据集合。 | 元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。 | 集合是无序可变元素不能重复。实际上集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复的且唯一 | 字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含: “键对象”和“值对象”。 | ||||||||||||||
可否读写 | 读写 | 只读 | 读写 | 读写 | ||||||||||||||
可否重复 | 是 | 是 | 否 | 是 | ||||||||||||||
存储方式 | 值 | 值 | 键(不能重复) | 键值对(键不能重复) | ||||||||||||||
是否有序 | 有序 | 有序 | 无序 | 无序,自动正序 | ||||||||||||||
创建 |
list = ["a", "b", "c", 1, 2, True]
list = list(range(10))
list = [] |
b = tuple() print(b) # 结果:() b = tuple('abc') print(b) # 结果:('a', 'b', 'c') b = tuple("1234") print(b) # 结果:('1', '2', '3', '4') b = tuple([1,2,3]) print(b) # 结果:(1, 2, 3) b = tuple(1234) print(b) # 结果:报错:TypeError: 'int' object is not iterable |
1)使用{}符号创建集合 college1 = {"哲学","经济学","法学","教育学"} print(college1)
2)使用set()函数创建集合,set()内置函数从其他数据结构转换,set1 = set(其他数据结构) college2 = set(["金融学","哲学","经济学","历史学","文学"]) 3)使用set创建字符串集合 college3 = set("我爱中国") 4)空集合set1 = set() |
k = ['name','age','job'] v = ['joe',28,'teacher'] d = dict(zip(k, v)) print(d)
dict4 = dict.fromkeys(["键1","键2","键3"],"N/A") |
||||||||||||||
常用方法 |
|
a = (2,3,4,5) b = (1,2) print(list(zip(a, b))) # 结果:[(2, 1), (3, 2)]
print(t[5]) # 正序索引,获取第6个元素 print(t[-1]) # 倒序索引 print(t[1:4]) # 范围取值 print('b' in t ) # 成员运算符
|
集合的数学运算 s1 = {1, 2, 3, 4, 5, 6} s2 = {6, 5, 4, 3, 2, 1} # == 判断两个集合的元素是否完全相同 print(s1 == s2) s3 = {4, 5, 6, 7} s4 = {1, 2, 3, 4, 5, 7, 6, 8} # issubset判断是否为"子集" print(s3.issubset(s4)) # s3是否为s4的子集 # issuperset判断是否为"父集" print(s4.issuperset(s3)) # s4是否为s3的父集 s5 = {6} s6 = {1, 3, 5, 7, 9} # isdisjoint 函数判断两个集合是否存在重复元素 # True 代表不存在重复元素,False则代表存在重复 print(s5.isdisjoint(s6))
|
#遍历所有的键-值对 -- items() for k,v in {1:'a',2:'b'}.items(): print(k,v) print("-------------------") #遍历字典中的所有键 -- keys() for k in {'a':'b','c':'d'}.keys(): print(k) print("-------------------") for k in {'a':'b','c':'d'}: print(k) print("-------------------") #遍历字典中的所有值 -- values() for v in {'a':'b','c':'d'}.values(): print(v)
1)新增和更新 dict1.update(k1 = "v1" , k2 = "v2") 或者:dict['k'] = "v"原字典就有的k则更新v,没有的就添加一个。update内用的是 k = "v",k不需要引号。2)删除dict1.pop("k1" , "k2")删除对应的k所在的键值对。pop里只写k,要加引号。 dict1.popitem():删除该字典中最后一个键值对,popitem本身有值,为被删掉的键值对转为元组形式,即("k" , "v")。在 3.7 之前的版本中,popitem() 方法删除一个随机项。 dict1.clear()清空字典。 字典的其他常用操作1)为字典设置默认值setdefault为字典设置默认值,如果某个key存在则忽略,如果不存在则设置。dict.setdefault('key','默认值')如:emp.setdefault('grade','c')2)字典的视图随着原始数据的变动而变动。ks = emp.keys() 提取键vs = emp.values() 提取值 its = emp.items() 提取键对值 3)字典的格式化输出老版本字典格式化字符串变量 = “%(键)s”%字典名str="姓名:%(name)s,评级:%(grade)s,入职时间:%(hiredate)s" %emp 新版本字典格式化字符串变量 = “{键}”.format_map(字典名)emp_str = "姓名{name},评级:{grade},入职时间:{hiredae}".format_map(emp) |