python序列的三种类型:列表、元组、字典

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]

猜你喜欢

转载自blog.csdn.net/pain_love/article/details/72858802
今日推荐