Python学习笔记——集合类型

时间:2022-10-22 17:03:00

集合类型有两种不同的类型——可变集合(set)和不可变集合(frozenset)

 

可变集合不是可哈希的,不能用作字典的键,也不能用做其他集合中的元素

不可变集合是有哈希值的,能被用做字典的键或者是作为集合中的一个成员

 

1.创建集合类型和给集合赋值

>>> s = set('cheeseshop')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's'])
>>> t = frozenset('bookshop')
>>> t
frozenset(['b', 'h', 'k', 'o', 'p', 's'])
>>> type(s)
<type 'set'>
>>> type(t)
<type 'frozenset'>
>>> len(s)
6
>>> len(t)
6
>>> s == t
False

2.访问集合中的值

>>> 'k' in s
False
>>> 'k' in t
True
>>> for i in s:
...     print i
... 
c
e
h
o
p
s

3.更新集合

>>> s.add('z')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's', 'z'])
>>> s.update('abc')
>>> s
set(['a', 'c', 'b', 'e', 'h', 'o', 'p', 's', 'z'])
>>> s.remove('z')
>>> s
set(['a', 'c', 'b', 'e', 'h', 'o', 'p', 's'])
>>> s -= set('abc')
>>> s
set(['e', 'h', 'o', 'p', 's'])

   不可变集合不能修改

4.删除集合中的成员和集合

>>> del t

5.集合类型操作符

  <1>标准类型操作符

    1.成员关系(in,not in)

    2.集合等价/不等价(==,!=)

    3.子集/超集(<,<=,>,>=)

  <2>集合类型操作符

    1.联合(|)

>>> s|t
set(['b', 'e', 'h', 'k', 'o', 'p', 's'])

    2.交集(&)

>>> s&t
set(['h', 's', 'o', 'p'])

    3.差补/相对补集(-)

>>> s-t
set(['e'])

     4.对称差分(^),即(XOR)异或,只能是属于集合s或者集合t的成员,不能同时属于两个集合

>>> s^t
set(['b', 'e', 'k'])

     5.混合集合类型操作

       类型不相同的时候,产生的结果类型和左操作数的类型相同

  <3>集合类型操作符(仅适用于可变集合)

    1.update()方法或者|=

>>> s|=t
>>> s
set(['b', 'e', 'h', 'k', 'o', 'p', 's'])

     2.intersection_update()方法或者&=,保留两个集合重复的成员

>>> s
set(['a', 'c', 'b', 'd'])
>>> t
set(['e', 'd', 'f'])
>>> s&=t
>>> s
set(['d'])

    3.difference_update()方法或者-=

    4.symmetric_difference_update()方法或者^=,差分操作

6.内建函数

  <1>标准类型函数——len()

    <2>集合类型工厂函数——set()和frozenset()

7.集合类型内建方法——P184