Python 集合类型

By | 2017年9月5日

集合对象是一个不同可哈希对象组成的无序集合。常见的使用包括成员测试、从序列中删除重复项和计算数学运算(如交、并、差和对称差)。

两种集合

  • set:可变的,没有哈希值,不可作为字典的key和另一个集合的元素
  • forzenset:不可变的,有哈希值,可以作为字典的key和另一个集合的元素

定义

class set([iterable])
class frozenset([iterable])

返回新的set集合或frozenset集合,其元素取自iterable。集合的元素必须是可哈希的。若要表示集合组成的集合,里面的集合必须是frozenset对象。如果iterable未指定,则返回一个新的空集合。

初始化方式

  • myset = set():返回新的空集合
  • myset = set((1,2,3)):从元组新建集合
  • myset = set([1,2,3]):从列表新建集合
  • myset = {1,2,3}:花括号中用逗号分隔表示集合

常用方法

  • len(s)
  • x in s
  • x not in s
  • copy():返回集合s的一个浅拷贝

集合运算方法

set和frozenset共有的方法

非符号方法 符号方法 说明
isdisjoint(other) 如果集合和other没有共同元素,则返回True
issubset(other) set <= other 集合是否是other的一个子集
set < other 集合是否是other的一个真子集
issuperset(other) set >= other 集合是否是other的一个超集
set > other 集合是否是other的一个真超集
union(other,...) set|other|... 返回集合和other等集合的并集
intersection(other,...) set & other & ... 返回集合与other等集合的交集
difference(other,...) set - other - ... 返回一个新的集合,元素在集合中但不在其它集合中
symmetric_difference(other) set ^ other 返回一个新的集合,元素在集合或other中,但不能在两个集合中都存在

set独有的方法

非符号方法 符号方法 说明
update(other,...) set |= other |... 向集合中添加other等其他集合的所有元素
intersection_update(other,...) set &= other & ... 更新集合,只保留集合与其他集合的交集
symmetric_difference_update(other) set ^= other 更新集合,仅保留集合和other的对称差集
difference_update(other,...) set -= other | ... 更新集合,删除与其他集合共有的元素
add(elem) 添加元素elem到集合
remove(elem) 从集合中移除元素。如果元素不包含在集合中抛出KeyError
discard(elem) 从集合中移除元素元素,如果它存在
pop() 从集合中移除并返回任意元素,如果此集合为空,则引发KeyError
clear() 从集合中移除所有元素

注意,非运算符版本的update ()、 intersection_update()、 difference_update()和symmetric_difference_update()方法将接受任何可作为参数的迭代。

官方文档

http://python.usyiyi.cn/translate/python_278/library/stdtypes.html#set-types-set-frozenset

发表评论

电子邮件地址不会被公开。 必填项已用*标注