马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
>>> # Python 将集合细分为可变和不可变两种对象,前者是 set(),后者是 frozenset():
>>> t = frozenset("FishC")
>>> t
frozenset({'h', 'C', 's', 'i', 'F'})
>>> a = set("fishC")
>>> t
frozenset({'h', 'C', 's', 'i', 'F'})
>>> a
{'h', 'C', 's', 'f', 'i'}
>>> # v
>>> # 冻结的集合(frozenset())是不支持修改的。
>>> # 仅适用于 set() 对象的方法
>>> # update(*others) 方法使用 others 容器中的元素来更新集合:
>>> s = set("fishC")
>>> s
{'h', 'C', 's', 'f', 'i'}
>>> s.update([1,1], "23")
>>> s
{1, 'h', '3', 'C', 's', 'f', 'i', '2'}
>>> # intersection_update(*others)、difference_update(*others) 和 symmetric_difference_update(other) 分别是使用前面讲过的交集、差集和对称差集的方式来更新集合:
>>> s.intersection_update("FishC")
>>> s
{'C', 's', 'i', 'h'}
>>> s.difference_update("Php", "Python")
>>> s
{'C', 's', 'i'}
>>> s.symmetric_difference_update("Python")
>>> s
{'o', 'h', 'y', 'P', 'C', 's', 'i', 't', 'n'}
>>> # 如果希望要单纯地往集合里添加数据,可以使用 add(elem) 方法:
>>> s.add("45")
>>> s
{'o', 'h', 'y', 'P', 'C', 's', 'i', 't', '45', 'n'}
>>> # 在集合中删除某个元素,可以使用 remove(elem) 或者 discard(elem) 方法
>>> s.remove('o')
>>> s
{'h', 'y', 'P', 'C', 's', 'i', 't', '45', 'n'}
>>> s.remove("没有的元素会报错!")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: '没有的元素会报错!'
>>> s.discard("没有的元素不会报错")
>>> # 删除还有一个 pop() 方法,用于随机从集合中弹出一个元素
>>> s
{'h', 'y', 'P', 'C', 's', 'i', 't', '45', 'n'}
>>> s.pop()
'h'
>>> s.pop()
'y'
>>> s.pop()
'P'
>>> s.pop()
'C'
>>> s.pop()
's'
>>> s.pop()
'i'
>>> s
{'t', '45', 'n'}
>>> s.pop()
't'
>>> s.pop()
'45'
>>> s
{'n'}
>>> s.pop()
'n'
>>> s
set()
>>> s = set("fishC")
>>> s
{'h', 'C', 's', 'f', 'i'}
>>> s.clear()
>>> s
set()
>>> # 可哈希
>>> hash(1)
1
>>> hash(1.0)
1
>>> hash(1.001)
1393716380
>>> # Python 中大多数不可变对象是可哈希的,而那些可变的容器则不哈希:
>>> hash("FishC")
-1442244524
>>> hash([1, 2, 3])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> hash((1, 2, 3))
-2022708474
>>> # 集合它是一个可变的容器,而可变的容器则是不可哈希。
>>> a = frozenset("fishc")
>>> y = {a, 3, 5}
>>> y
{frozenset({'h', 's', 'f', 'i', 'c'}), 3, 5}
>>> |