不允许重复的元素出现
无序排列
可哈希
set的底层代码是用字典来实现的?
相当于一个特殊的list
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
In [
5
]: s1
=
set
()
In [
6
]:
type
(s1)
Out[
6
]:
set
In [
7
]: s1.add(
"inter"
)
In [
8
]: s1.add(
"inter"
)
In [
9
]: s1
#添加了2个inter,但是只有一个添加进了集合。
Out[
9
]: {
'inter'
}
In [
10
]: s1.add(
"ac"
)
In [
11
]: s1
Out[
11
]: {
'ac'
,
'inter'
}
In [
19
]: l1
=
[
1
,
2
,
3
,
4
,
5
,
2
]
In [
20
]: s2
=
set
(l1)
#接受一个列表,转换为集合。
In [
21
]: s2
Out[
21
]: {
1
,
2
,
3
,
4
,
5
}
In [
45
]: s3
Out[
45
]: {
2
,
'ac'
,
'china'
,
'inter'
}
#输出一个集合,内容是s3里面的,不同于s2的元素。s3本身不改变
In [
42
]: s3.difference(s2)
Out[
42
]: {
'ac'
,
'china'
,
'inter'
}
#不输出任何信息,s3本身发生了改变。
In [
48
]: s3.difference_update(s2)
In [
49
]: s3
#就是去除了s2中的元素
Out[
49
]: {
'ac'
,
'china'
,
'inter'
}
#返回2个集合的交集,集合本身不改变
In [
56
]: s1.intersection(s3)
Out[
56
]: {
'ac'
,
'china'
,
'inter'
}
#修改s1为2个集合的交集,不返回任何东西
In [
59
]: s1.intersection_update(s3)
#返回2个集合的差集(就是2个集合不相同的元素)
In [
83
]: s1.symmetric_difference(s3)
Out[
83
]: {
'ac'
,
'inter'
}
#2个集合没有交集,返回true。有交集返回false
In [
65
]: s2.isdisjoint(s3)
Out[
65
]:
True
#s3是否是s1的子集,是返回true,不是返回false
In [
71
]: s3.issubset(s1)
Out[
71
]:
True
#pop貌似是随机的移除一个元素?
In [
73
]: s1
Out[
73
]: {
3
,
'ac'
,
'china'
,
'inter'
}
In [
74
]: s1.pop()
Out[
74
]:
3
In [
75
]: s1.pop()
Out[
75
]:
'ac'
In [
76
]: s1.pop()
Out[
76
]:
'inter'
In [
77
]: s1
Out[
77
]: {
'china'
}
#remove是移除指定的元素,没有返回值
In [
78
]: s2
Out[
78
]: {
1
,
2
,
3
,
4
,
5
}
In [
79
]: s2.remove(
2
)
In [
80
]: s2
Out[
80
]: {
1
,
3
,
4
,
5
}
|
本文转自 chomperwu 51CTO博客,原文链接:http://blog.51cto.com/chomper/1935148,如需转载请自行联系原作者