码迷,mamicode.com
首页 > 编程语言 > 详细

python学习笔记(六)之集合2

时间:2018-01-11 15:42:58      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:冻结   报错   修改   last   判断   一个   素数   als   函数   

python学习笔记(七)之集合2
不变的集合
在”python学习笔记(六)之集合1“中以set()来建立集合,这种方式所创建的集合都是可原地修改的集合,或者说是可变的,也就是说是unhashable。
还有一种集合,不能在原处修改。这种集合的创建方法是用frozenset(),ps:frozen冻结的,是不可变的,也就是说是hashable--可哈希。
实例1:

>> f_set = frozenset("wtf")
>> f_set
frozenset([‘t‘, ‘w‘, ‘f‘])
>> f_set.add("python")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: ‘frozenset‘ object has no attribute ‘add‘
说明:报错说集合是不能修改的。
对比可以修改的集合:
实例2:
>> c_set = set("name")
>> c_set
set([‘a‘, ‘e‘, ‘m‘, ‘n‘])
>> c_set.add("python")
>> c_set
set([‘a‘, ‘e‘, ‘m‘, ‘python‘, ‘n‘])

集合运算
元素与集合的关系
只有一种关系:元素要么属于集合,要么不属于。
实例3:

>> c_set
set([‘a‘, ‘e‘, ‘m‘, ‘python‘, ‘n‘])
>> "a" in c_set
True
>> "wtf" in c_set
False

集合与集合的关系
判断集合a是否等于集合b
实例4:

>> a = set(["q","w","t","f"])
>> b = set(["w","f","q","t"])
>> a == b
True
>> a != b
False

判断集合c是否是集合b的子集,或者说b是否是a的超集(超集:即a的元素也都是b的元素,但是b的元素比a的元素数量多。)
实例5:

>> c = set(["w","t","f","g"])
>> d = set(["w","t"])
>> d < c ##d是c的子集
True
>> d.issubset(c) ##d是否是c的子集
True
>> c.issuperset(d) ##c是否是d的超集
True

集合的并集
表达式:a | b
或者使用函数a.union(b) ps:union联盟
注意:a,b的并集得到的结果就是两个集合并集,这个结果是新生成的一个对象,不是将集合a扩充!
实例6:

>> a = set(["w","t","f"])
>> b = set(["z","h","a","o"])
>> a | b
set([‘a‘, ‘t‘, ‘w‘, ‘f‘, ‘h‘, ‘z‘, ‘o‘])
>> a.union(b)
set([‘a‘, ‘t‘, ‘w‘, ‘f‘, ‘h‘, ‘z‘, ‘o‘])
>> a
set([‘t‘, ‘w‘, ‘f‘])
>> b
set([‘a‘, ‘h‘, ‘z‘, ‘o‘])

集合的交集
表达式:b & c
或者使用函数b.intersection(c) ps:intersection 路口
实例7:

>> b = set(["z","h","a","o"])
>> c = set(["z","y","d"])
>> b & c
set([‘z‘])
>> b.intersection(c)
set([‘z‘])
>> b
set([‘a‘, ‘h‘, ‘z‘, ‘o‘])
>> c
set([‘y‘, ‘z‘, ‘d‘])

集合的补集
表达式:b - c ##b相对于c的差(补),即b相对于c不同的元素
或者使用函数 b.difference(c)
实例8:

>> b
set([‘a‘, ‘h‘, ‘z‘, ‘o‘])
>> c
set([‘y‘, ‘z‘, ‘d‘])
>> b - c
set([‘a‘, ‘h‘, ‘o‘])
>> c - b
set([‘y‘, ‘d‘])
>> b.difference(c)
set([‘a‘, ‘h‘, ‘o‘])

python学习笔记(六)之集合2

标签:冻结   报错   修改   last   判断   一个   素数   als   函数   

原文地址:http://blog.51cto.com/wutengfei/2059850

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!