对比项 | List | Tuple | Dict | set |
元素类型 | 区别于Java等静态语言,Python是动态语言,元素类型可以不一致,如list:L=[0,'Lily',5.67] | |||
翻译 | 列表 | 元组 | 字典 | 集 |
定义 | 有序集合 | 有序集合 | 无序的、key-value映射关系的集合 | 无序的、key的集合 |
更新 | 一旦创建,不可修改 | ① key元素唯一,且不可变 ② 可根据key查找并更新value元素 | key元素唯一,且不可变 | |
检索速度 | 慢,元素越多,检索越慢 | 慢,元素越多,检索越慢 | 快,且与元素个数无关 | 快,且与元素个数无关 |
内存占用 | 低 | 低 | 高 | 高 |
符号 | [ ]
| ( )
| { }
| set() set()函数只能传一个参数,可以是字符串,也可以是一个list: s=set('abc') s=set(['a','b','c']) |
检索元素 | 【索引方式】L[-1]查找最后一位元素:'Bob' | 【索引方式】T[-1]查找最后一位元素:'Bob' | 【根据key检索value】 ① d['Adam']检索结果:95,若key不存在,报错:KeyError ② 先判断key是否存在 if 'Adam' in d: print d['Adam'] ③ print d.get('Adam'),若key不存在,返回None | |
新增元素 | 【末尾追加】L.append() 【有序插入】L.insert(0,'Lily')第0位插入‘Lily’ | 不支持 | 【直接根据key赋值】key已存在,会更新value;不存在,则新增 d['Hayley']=100 print d # {'Adam':95,'Lisa':85,'Bart':59,'Hayley':100} | 【add()】 s.add(4) # s=sert([1,2,3,4])
*若元素已存在,add()不报错,但不会新增 |
删除元素 | 【末尾删除】L.pop() 【定位删除】L.pop(0)删除'Adam' | 不支持 | 【根据key删除:pop()】 d.pop('Adam') #删除'Adam':95,并返回95 print d # {'Lisa':85,'Bart':59} | 【remove()】 if 3 in s: s.remove(3) # s=set([1,2])
*若元素不存在,remove()会报错。所以删除前需要判断 |
替换元素 (更新) | L[1]='Lily'将0替换为'Lily' | 不支持
#当tuple中有list元素时,list内元素可被替换:
| ①【按照key值重新赋值value】 d['Adam']=100 print d # {'Adam':100,'Lisa':85,'Bart':59} ②【update()】 d.update({'Adam':100}) | 不支持
可以通过新增+删除实现 |
单元素 | L=['Adam'] L_1=[1] | T=('Adam') T=(1,) #()也可表示数值运算中的优先级,故只有一个数值元素时,必须在末尾多加一个逗号“,” #非数值末尾元素后也可多加一个逗号 | d={'Adam'} d={1} | |
遍历 | ①【获取元素】 for key in L: print key 打印结果: Adam 0 2 Bob ②【获取索引和元素:函数enumerate(L)】 for index,name in enumerate(L): print index,'-',name 打印结果: 0-Adam 1-0 2-2 3-Bob ③【合并两个list:函数zip()】 n=range(0,3) zip(n,L) 打印结果: [(0,'Adam'),(1,0),(2,2),(3,'Bob')]
# key是在for循环中定义的 | ①【获取元素】 for key in T: print key 打印结果: Adam 0 2 Bob ②【获取索引和元素:函数enumerate(L)】 for index,name in enumerate(L): print index,'-',name 打印结果: 0-Adam 1-0 2-2 3-Bob ③【合并两个list:函数zip()】 n=range(0,3) zip(n,L) 打印结果: [(0,'Adam'),(1,0),(2,2),(3,'Bob')]
# key是在for循环中定义的 | ①【遍历获取key】 for key in d: print key 打印结果: Adam LisaBart ②【获取values:方法d.values()】 print d.values() 打印结果: 95 85 59 ★实质为将dict转换成1个包含value的list★ ③【获取values:方法d.itervalues()】 print d.itervalues() 打印结果: for v in d.itervalues(): print v 打印结果: 95 85 59 ★不会转换dict,只是在迭代中依次取出value,因此,该方法节省内存★ ④【同时获取key和values:方法d.items()】 print d.items() 打印结果为包含tuple的list: [('Adam',95),('Lisa',85),('Bart',59)] 迭代: for key,value in d.items(): print key,':',value 打印结果: Adam:95 Lisa:85Bart:59 ⑤【同时获取key和values:方法d.iteritems()】 与itervalues一样,不生成list ⑥【遍历获取key和value】 for key in d: print str(key)+':'+str(d[key]) 打印结果: Adam:95 Lisa:85Bart:59 # key是在for循环中定义的 | for key in d: print key 打印结果: 1 23 |