python sets

python 创建集合 必须使用set 构造函数

1. python 创建集合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
>>> a_set = set()
>>> a_set
set([])
>>> a_set = set("abcd")
>>> a_set
set(['a', 'b', 'c', 'd'])
>>> a_set = set([1,2,3,4])
>>> a_set
set([1, 2, 3, 4])
>>> b_set = set([1,2,2,2])
>>> b_set
set([1,2])
>>> c_set = set(["a", 1, 2.5, (5,6)])
>>> c_set
set(['a', 1, (5,6), 2.5])

2. python 集合的方法、运算符和函数

2.1. 典型 集合运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> a_set = set("1234")
>>> print a_set
set(['a', 'c', 'b', '1', '3', '2'])
>>> len(a_set)
6
>>> "a" in a_set
True
>>> "z" in a_set
False
>>> for element in a_set:
... print element
a
c
b
1
3
2

3. 集合 方法

3.1. 交集

intersection 方法创建新集合,该集合为 2个 集合的交集

1
2
3
4
>>> a_set = set("abcd")
>>> b_set = set("cdef")
>>> print a_set.intersection(b_set)
set(['c', 'd'])

3.2. 并集

union 方法创建新集合,该集合为 2个 集合的所有元素

1
2
3
4
>>> a_set = set("abcd")
>>> b_set = set("cdef")
>>> print a_set.union(b_set)
set(['a', 'c', 'b', 'e', 'd', 'f'])

3.3. 差集

difference 方法创建新集合,该集合为 不在参数集合中的元素
不同于 其他计算,差集是不可交换的
即:a_set.difference(b_set) 与 b_set.difference(a_set) 不同

1
2
3
4
5
6
7
>>> a_set = set("abcd")
>>> b_set = set("cdef")
>>> print a_set.difference(b_set)
set(['a', 'b'])
>>> print b_set.difference(a_set)
set(['e', 'f'])

3.4. 对称差

symmetric_difference 方法 与 交集 相反,它收集 2个 集合 那些不共享的元素
对称差计算中集合的顺序不重要

1
2
3
4
5
6
7
>>> a_set = set("abcd")
>>> b_set = set("cdef")
>>> print a_set.symmetric_difference(b_set)
set(['a', 'b', 'e', 'f'])
>>> print b_set.symmetric_difference(a_set)
set(['a', 'b', 'e', 'f'])

3.5. 子集 与 超集

subset(子集) superset(超集)

1
2
3
4
5
6
7
8
9
10
>>> small_set = set("abc")
>>> big_set = set("abcdef")
>>> print small_set.issubset(big_set)
True
>>> print small_set.issuperset(big_set)
False
>>> print big_set.issuperset(small_set)
True

3.6. 其他 集合方法

1
2
3
4
5
6
7
add(element) 向集合中添加元素。如果该元素已存在于集合中,则没有作用
clear() 删除集合的所有元素(使它成为空集)
remove(element) 删除元素,如果元素不在集合中,会报错
discard(element) 删除元素,如果元素不在集合中,不会报错
*copy() 返回集合的浅拷贝
带 * 方法,有值返回(其余没有)