python的数据结构主要就是序列,而列表、元组和字典三种类型比较容易混淆,特地做了个笔记记录了一下,供大家学习:原文地址:http://www.rednat.com/archives/python-sequence-of-three-types-lists-tuples-dictionaries.html
列表:有序可变序列 创建:userlist = [1,2,3,4,5,6] 修改:userlist[5] = 999 添加:userlist.append(777) 删除:userlist.remove(4) 或者 del(userlist[3]) pop方法:移除一个元素,默认为最后一个。 userlist.pop(3)移除第三个元素,并且返回该值。 插入:userlist.insert(3,555) 排序:userlist.sort() 默认为升序 userlist.sort(reverse=True)使用降序 。或者使用sorted(userlist)进行排序 反转:userlist.reverse() 查找:userlist.index(3) 或者使用 in 保留字进行查找 取元素:userlist[2] 取坐标:userlist.index(999) 列表的连接: extend()方法。 或者使用 + 连接两个列表。 两者不同。 |
元组:有序不可变序列
创建:tuple1=(1,2,3,4,5,6) 修改:值不能修改 添加:没有append函数,只能通过赋值方式添加: tuple2=(tuple1,7,8,9) 删除:(不可变序列无该属性) 插入:(不可变序列无该属性) 排序:只能使用sorted(userlist)进行排序 反转:(不可变序列无该属性) 查找:userlist.index(3) 或者使用 in 保留字进行查找 取元素:tuple1[4] 取坐标:tuple1.index(3) 去重:set(tuple1) 解包:a,b,c,d,e,f = tuple1 |
字典:无序可变序列
创建:dict1={'a':'001','b':'002','c':'003','d':'004'} 或者使用函数创建字典:dict1 = dict([('a','001'),('b','002'),('c','003'),('d','004')]) 修改:值不能修改 添加:直接赋值:dict1['f'] = '006' ; 或者使用setdefault()函数添加字典元素:dict1.setdefault('e','005'),当key已经存在时,则保持原有的k-v不变,当key不存在时,则添加该k-v。 删除:字典无remove()函数,但可以del()函数删除字典的kv:del(dict1['e'])。也可以使用pop()方法删除指定的元素,由于字典是无序的,所以pop()不会默认删除最后一个元素,必须要指定key 插入:字典是无index坐标的,只有添加,没有插入 排序:字典是无index坐标的,所以也是无序的,只能通过key找到value。但可以通过其他方法排序: for k in sorted(dict1): print(k,dict1[k]) 反转:(无序不可反转) 查找:dict1['c'] 或者使用 in 保留字进行查找。 或者使用items()方法将字典的每一对kv转换为元组后进行便利查找 取元素:dict1['c'] 或使用dict1.get('c') 取坐标:key唯一,value不唯一,只能通过循环便利字典来找出 去重:key唯一,无需去重 |
字符串–元组–列表–字典 的类型相互转换
1、元组转换为列表:list() 2、列表转为为元组:tuple() 3、字典转换为列表和元组: dict1.items() 4、列表元祖转为为字典:dict() |
问题1:为什么会有元组的概念存在,而不能使用列表完全取代元组?
答案:
不可改变类型(元组、字符、数字、frozenset)的优点:
1、可哈希–能够用于字典的key或设置元素
2、在多线程情况下,比可变对象更安全
举例说明:
1 2 3 4 5 6 7 8 9 10 11 12 |
tuple1 = (1,2,3) dict1 = {'a':999,tuple1:777,'c':888} print(dict1) 结果为: {'a': 999, 'c': 888, (1, 2, 3): 777} list1 = [1,2,3] dict1 = {'a':999,list1:777,'c':888} print(dict1) 结果报错 |
问题2:怎么判断元组和列表都是有序序列,而字典是无序序列?
答案:
有序序列都有一个index()方法,并且可以用sorted对其元素值进行排序。二字典只能对其key进行排序,value没有默认方法进行排序
tuple1.index() list1.index() sorted(tuple1) sorted(list1) |
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
tuple1 = (1,3,2) print(sorted(tuple1)) list1 = [1,2,3] print(sorted(list1)) dict1 = {1:2,3:4} print(sorted(dict1)) 结果为: [1, 2, 3] [1, 2, 3] [1, 3] |