一、集合
set,集合,是唯一的、不可变的对象的一个无序集合。集合只能包含不可变的对象类型,因此,列表和字典不能嵌入集合;如果需要存储复合值,可以嵌入元组;如果需要嵌入集合本身,需要调用frozenset,由frozenset创建的集合不可变,且不可修改,但可以嵌套到其他集合中。
1、集合的基础知识(python2.7)
1、定义空集合 In [2]: s1 = set() 2、创建集合 In [3]: s2 = {11,22,‘dd‘} In [4]: print s2 set([‘dd‘, 11, 22]) 3、通过序列或其他可迭代的对象创建集合 In [5]: s3 = set(‘abcde‘) In [6]: print s3 set([‘a‘, ‘c‘, ‘b‘, ‘e‘, ‘d‘]) In [9]: s4 = set({‘a‘:1,‘b‘:‘gg‘}) In [10]: print s4 set([‘a‘, ‘b‘]) In [11]: s5 = set([1,2,‘ace‘,‘hj‘]) In [12]: print s5 set([‘hj‘, 1, 2, ‘ace‘]) 4、通过序列或可迭代对象创建的集合可进行的数学操作 In [13]: ‘a‘ in s3 Out[13]: True In [14]: s3 -s4 Out[14]: {‘c‘, ‘d‘, ‘e‘} In [15]: s3 | s4 Out[15]: {‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘} In [16]: s3 & s4 Out[16]: {‘a‘, ‘b‘} In [17]: s3 ^ s4 Out[17]: {‘c‘, ‘d‘, ‘e‘} In [18]: s3 > s4 Out[18]: True In [19]: s3 < s4 Out[19]: False
2、集合的方法
1、添加元素:集合中无则添加,有则不进行操作 In [21]: s3.add(‘new‘) In [22]: print s3 set([‘a‘, ‘c‘, ‘b‘, ‘e‘, ‘d‘, ‘new‘]) 2、清除集合中所有元素 In [24]: s2 Out[24]: {11, 22, ‘dd‘} In [25]: s2.clear() In [26]: s2 Out[26]: set() 3、浅拷贝 In [28]: s3 Out[28]: {‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘new‘} In [29]: s5 = s3.copy() In [30]: s5 Out[30]: {‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘new‘} 4、两个集合的差集; In [31]: s3 Out[31]: {‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘new‘} In [32]: s4 Out[32]: {‘a‘, ‘b‘} s3中存在而s4中不存在,差集 In [33]: s3.difference(s4) Out[33]: {‘c‘, ‘d‘, ‘e‘, ‘new‘} s3中不存在的和s4中不存在的都取出,对称差集 In [34]: s3.symmetric_difference(s4) Out[34]: {‘c‘, ‘d‘, ‘e‘, ‘new‘} 先比较差集,之后将比较的结果重新赋值给s3 In [35]: s3.difference_update(s4) In [36]: s3 Out[36]: {‘c‘, ‘d‘, ‘e‘, ‘new‘} 先比较对称差集,之后将比较的结果重新复制给s3 In [42]: s3.symmetric_difference_update(s4) In [43]: s3 Out[43]: {‘c‘, ‘d‘, ‘e‘, ‘new‘} 5、移除指定元素,不存在不报错 In [43]: s3 Out[43]: {‘c‘, ‘d‘, ‘e‘, ‘new‘} In [44]: s3.discard(‘new‘) In [45]: s3 Out[45]: {‘c‘, ‘d‘, ‘e‘} In [46]: s3.discard(111) 6、移除指定元素,不存在会报错 In [47]: s3.remove(111) --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-47-179a5da03057> in <module>() ----> 1 s3.remove(111) KeyError: 111 7、随机移除集合中元素,集合为空时会报错 In [48]: s3 Out[48]: {‘c‘, ‘d‘, ‘e‘} In [49]: s3.pop() Out[49]: ‘c‘ In [50]: s3 Out[50]: {‘d‘, ‘e‘} 8、两个集合取交集 In [57]: s4 Out[57]: {‘a‘, ‘b‘} In [58]: s3 Out[58]: {‘a‘, ‘c‘, ‘d‘, ‘e‘} In [59]: s3.intersection(s4) Out[59]: {‘a‘} 将取出的交集重新赋值给s3 In [60]: s3.intersection_update(s4) In [61]: s3 Out[61]: {‘a‘} 9、判断两个集合有无交集 In [65]: s3.isdisjoint(s4) Out[65]: False 10、并集 In [67]: s3.union(s4) Out[67]: {‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘} 11、将可迭代的对象加入集合 列表 In [68]: l1 = [1,2,3,4] In [69]: s3.update(l1) In [70]: s3 Out[70]: {1, 2, 3, 4, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘} 字符串 In [71]: s3.update(‘jonny‘) In [72]: s3 Out[72]: {1, 2, 3, 4, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘j‘, ‘n‘, ‘o‘, ‘y‘} 元组 In [74]: s3.update(t1) In [75]: s3 Out[75]: {1, 2, 3, 4, 12, 13, 14, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘j‘, ‘n‘, ‘o‘, ‘y‘}
3、集合解析(python3.x新特性)
>>> {i ** 2 for i in [1,2,3,4]} {16, 1, 4, 9}
二、函数
本文出自 “linux启航” 博客,请务必保留此出处http://jiayimeng.blog.51cto.com/10604001/1898941
原文:http://jiayimeng.blog.51cto.com/10604001/1898941