python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.
sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。
社团: linux兴趣小组 linuxL = [“王韦伯”,”王占强”] python兴趣小组 pythonL = [“王韦伯”,”黄鑫”] 。。。。
统计所有的社团 l = []
student = “王韦伯” 列表: linuxL + PythonL = [“王韦伯”,”王占强”,”王韦伯”,”黄鑫”]集合: {“王占强”,”王韦伯”,”黄鑫”}ACM比赛:** 不可变的数据类型一定可哈希;hash()内置函数可以判断某个类型是否可哈希;
- 删除: s.remove(1), # 删除存在的元素,如果不存在,直接报错; s.discard(1) # 删除存在的元素,如果不存在,do nothing; s.pop(), # 随即删除集合元素,不加任何参数;
- 复制: s1 = s.copy() #s和s1的id不同 - 清空: s.clear()
列表生成式,其实就是生成列表的一种方式,是python内置的;
简单的列表生成式 [ i*i for i in range(10) ] # 返回1-10平方的一个列表; [ fun(i) for i in l] # 对列表的每个元素执行某个函数操作; for…if的嵌套 [ i*i for i in range(1,10) if i%2==0] # 返回1-10之间所有的偶数 [ i for i in range(1,10) if isprime(i)] # 返回1-10之间所有的质数,判断质数的函数是自定义的;- for…for…的嵌套 [ i+j for i in “abc” for j in “123”] # 返回”abc”和”123”的所有组合;
** 求10的阶乘:
filter In [15]: def is_oushu(n): ....: if n%2 == 0: ....: return True ....: else: ....: return False ....: In [16]: filter(is_oushu,range(1,11)) Out[16]: [2, 4, 6, 8, 10] - sorted() n [20]: l = ["a","Ab","cd","C"] In [21]: sorted(l) Out[21]: ['Ab', 'C', 'a', 'cd'] In [22]: def cmp_ignore_case(s1,s2): ....: s1 = s1.lower() ....: s2 = s2.lower() ....: if s1 < s2: ....: return -1 ....: elif s1 > s2: ....: return 1 ....: else: ....: return 0 ....: In [23]: sorted(l,cmp_ignore_case) Out[23]: ['a', 'Ab', 'C', 'cd']** 删除列表中重复的元素:l = [1,2,3,1,2,3] - 强制转化列表为集合类型:list(set(l)) - 将列表转化为字典,拿出里面的所有key值: dict.fromkeys(l).keys() ** 实现switch的两种方法: - if…elif…else… - 通过字典实现: d= {“key”,func} if oper in d.keys(): doper else: print “error”** 删除列表中重复的元素:l = [1,2,3,1,2,3] - 强制转化列表为集合类型:list(set(l)) - 将列表转化为字典,拿出里面的所有key值: dict.fromkeys(l).keys() ** 实现switch的两种方法: - if…elif…else… - 通过字典实现: d= {“key”,func} if oper in d.keys(): doper else: print “error”