python集合set,frozenset--笔记
《Python3程序开发指南》笔记。
python提供了2种内置的集合类型:可变的set类型、固定的frozenset类型。
只有可哈希运算的对象可添加到集合中。可哈希的数据类型:float、frozenset、int、str、tuple。不是可哈希的:dict、list、set
集合方法与操作符
s.add(x) | |
s.clear() | |
#s.copy() | 返回集合 s 的浅拷贝 |
#s.difference(t) s-t | 返回一个新集合,其中包含在s中但不在集合t中的数据项 |
s.difference_update(t) s-=t | 移除每一个在集合t 但不在集合s中的项 |
s.discard(x) |
如果数据项x在集合s中,就移除该数据项 参见:s.remove() |
s.intersection(t) s&t | 返回一个新集合,集合求交集 |
s.intersection_update(t) s&=t | 使s包含s与t的交集 |
#s.isdisjoin(t) | 如果s与t没有相同的项,就返回True |
#s.issubset(t) s<=t |
s是t的子集,返回True s<t:真子集 |
#s.issuperset s>=t |
s与t相同,或是t的超集,返回True s>t:t为s的真子集 |
s.pop() | 返回并移除s中的一个随机项,如果s为空集,产生KeyError异常 |
s.remove(x) |
从s中移除x,如果s中不包含x,产生KeyError异常 参见:s.discard() |
#s.symmetric_difference(t) s^t | 返回一个新集合,其中包含s与t并集,但除去交集的数据项 |
s.symmetric_difference_update(t) s^=t | |
#s.union(t) s|t | 并集 |
s.update(t) s|=t |
集合内涵
两种语法格式:
[expression for item in iterable]
[expression for item in iterable if condition]
例如,files中的一个文件夹列表,( ⊙ o ⊙ )是的集合html只存放那些以.htm和.html结尾的文件名
>>> html={x for x in files if x.lower().endswith((".html",".htm"))}
固定集合---frozenset
固定集合支持的方法在上面的表中用@标明。
二元运算符应用于集合和固定集合时,得到的类型与左边操作数的数据类型一致,例如,f为固定集合,s为集合,f&s产生一个固定集合,s&f产生一个集合。