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] |