python的dict,set,list,tuple简单分析

转自:http://my.oschina.net/courade/blog/143894

字典(dict)
dict 用 {} 包围 
dict.keys(),dict.values(),dict.items() 
hash(obj)返回obj的哈希值,如果返回表示可以作为dict的key 
del 或 dict.pop可以删除一个item,clear清除所有的内容 
sorted(dict)可以吧dict排序 
dict.get()可以查找没存在的key,dict.[]不可以 
dict.setdefault() 检查字典中是否含有某键。 如果字典中这个键存在,你可以取到它的值。 如果所找的键在字典中不存在,你可以给这个键赋默认值并返回此值。 
{}.fromkeys()创建一个dict,例如: {}.fromkeys(('love', 'honor'), True) =>{'love': True, 'honor': True} 
不允许一个键对应多个值 
键值必须是哈希的,用hash()测试 
一个对象,如果实现_hash()_方法可以作为键值使用

 

集合(set)
集合是一个数学概念,用set()创建 
set.add(),set.update.set.remove,添加更新删除,-= 可以做set减法 
set.discard 和 set.remove不同在于如果删除的元素不在集合内,discard不报错,remove 报错 
< <= 表示 子集,> >=表示超集 
| 表示联合 & 表示交集 - 表示差集 ^ 差分集里啊
 

列表(list)
列表是序列对象,可包含任意的Python数据信息,如字符串、数字、列表、元组等。列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加、修改、删除等操作。可以通过list(seq)函数把一个序列类型转换成一个列表。
append(x) 在列表尾部追加单个对象x。使用多个参数会引起异常。 
count(x) 返回对象x在列表中出现的次数。 
extend(L) 将列表L中的表项添加到列表中。返回None。 
Index(x) 返回列表中匹配对象x的第一个列表项的索引。无匹配元素时产生异常。 
insert(i,x) 在索引为i的元素前插入对象x。如list.insert(0,x)在第一项前插入对象。返回None。 
pop(x) 删除列表中索引为x的表项,并返回该表项的值。若未指定索引,pop返回列表最后一项。 
remove(x) 删除列表中匹配对象x的第一个元素。匹配元素时产生异常。返回None。 
reverse() 颠倒列表元素的顺序。 
sort() 对列表排序,返回none。bisect模块可用于排序列表项的添加和删除。 
 

元组(tuple)
tuple=(1,),这是单个元素的元组表示,需加额外的逗号。
tuple=1,2,3,4,这也可以是一个元组,在不使用圆括号而不会导致混淆时,Python允许不使用圆括号的元组。
和列表一样,可对元组进行索引、分片、连接和重复。也可用len()求元组长度。  
元组的索引用tuple[i]的形式,而不是tuple(i)。 
和列表类似,使用tuple(seq)可把其它序列类型转换成元组。

------------------------------------------------------ 分割线 --------------------------------------------------------------------

以下摘自 http://blog.csdn.net/gemini_dolphin/article/details/7786892

Python中Set和List的性能差距能有数百倍 

如果有需要求(集合,列表等)的并集和交集的时候,最好使用Set。

----------------------------------------------------

set转成list方法如下:                                                     list转成set方法如下:
s = set('12342212')                                                       l = ['12342212']
print s    # set(['1', '3', '2', '4'])                                       s = set(l[0])
l = list(s)                                                                         print s    # set(['1', '3', '2', '4'])
l.sort()    # 排序                                                             m = ['11','22','33','44','11','22']
print l    # ['1', '2', '3', '4']                                               print set(m)    # set(['11', '33', '44', '22'])

可见set和lsit可以自由转换,在删除list中多个/海量重复元素时,可以先转换成set,然后再转回list并排序(set没有排序)。此种方法不仅方便且效率较高。

原文地址:https://www.cnblogs.com/muyouking/p/6413039.html