码迷,mamicode.com
首页 > 其他好文 > 详细

数据类型之集合

时间:2018-08-13 00:43:16      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:而不是   python   python3   href   相加   rem   多个   res   oob   

在python中集合分两种:

  • set: 可变集合
  • fronzenset: 不可变集合

集合的特点:

  • 无序
  • 不重复,常用于去重
  • 元素必须是可hash的,即不可变类型
  • 通过hash table实现,查询速度极快,可以很高效地判断元素是否存在于某个集合
  • 集合很消耗内存

创建一个set。注意:创建一个空集合必须使用set()而不是{},{}用来创建一个空字典

s1 = set(‘abcde‘)
s2 = set([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
s3 = {‘a‘,‘b‘, ‘c‘, ‘d‘, ‘e‘}
print(s1)
print(s2)
print(s3)
# {‘c‘, ‘a‘, ‘e‘, ‘d‘, ‘b‘}
# {‘c‘, ‘a‘, ‘e‘, ‘d‘, ‘b‘}
# {‘c‘, ‘a‘, ‘e‘, ‘d‘, ‘b‘}

创建一个frozenset

s4 = frozenset(‘abcde‘)
print(s4)
# frozenset({‘c‘, ‘a‘, ‘e‘, ‘d‘, ‘b‘})

集合运算

s5 = set(‘cefxyz‘)

# 并集(合集),相加
print(s1 | s5)
print(s1.union(s5))
# ‘z‘, ‘d‘, ‘f‘, ‘c‘, ‘x‘, ‘a‘, ‘e‘, ‘b‘, ‘y‘}

# 交集,公共部分
print(s1 & s5)
print(s1.intersection(s5))
# {‘c‘, ‘e‘}

# 差集,相减
print(s1 - s5)
print(s1.difference(s5))
# {‘b‘, ‘a‘, ‘d‘}

# 对称差集,并集减去交集
print(s1 ^ s5)
print(s1.symmetric_difference(s5))
# {‘x‘, ‘a‘, ‘b‘, ‘z‘, ‘y‘, ‘d‘, ‘f‘}

判断一个集合是否是另一个集合的子集

s6 = {‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘}
print(s1.issubset(s6))
# True

判断一个集合是否是另一个集合的父集

print(s6.issuperset(s1))
# True

添加一个元素

s1.add(‘m‘)
print((s1))
# {‘a‘, ‘c‘, ‘e‘, ‘b‘, ‘m‘, ‘d‘}

添加多个元素

# 这里传递一个iterable即可
s1.update(‘opq‘)
print((s1))
# {‘o‘, ‘a‘, ‘m‘, ‘d‘, ‘c‘, ‘b‘, ‘e‘, ‘q‘, ‘p‘}

删除一个元素

# 对于remove()方法,如果元素不存在将抛出KeyError异常
s1.remove(‘a‘)
print((s1))
# {‘p‘, ‘e‘, ‘c‘, ‘d‘, ‘m‘, ‘o‘, ‘q‘, ‘b‘}

# discard()方法同样用来删除一个元素,不过元素不存在时不做任何操作,并且不会抛出异常
s1.discard(‘b‘)
print(s1)
# {‘q‘, ‘d‘, ‘o‘, ‘e‘, ‘p‘, ‘c‘, ‘m‘}

# pop()删除任意一个元素并返回它的值,如果集合为空将抛出KeyError异常
res = s1.pop()
print(res)
# d

参考:
http://www.runoob.com/python3/python3-set.html
https://zh.wikipedia.org/wiki/集合_(数学)

数据类型之集合

标签:而不是   python   python3   href   相加   rem   多个   res   oob   

原文地址:https://www.cnblogs.com/keithtt/p/9465549.html

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