Python-集合

Python-集合

集合中的元素必须可hash

集合具有去重性,一个集合中没有两个相同的元素

集合是无序的(集合中的元素没有先后之分),如集合{1,2,3}和{3,2,1}是同一个集合

 定义一个集合

1

2

3

4

5

6

>>> num = {1,2,4,3,7,5}

>>> num

{123457}

>>> num1 = set([2,4,6,1,2,9,8])

>>> num1

{124689}

 集合添加元素

1

2

3

4

5

6

7

8

9

10

11

12

13

>>> num

{123457}

>>> num.add(9)  # 添加元素,一次只能添加一个

>>> num

{1234579}

>>> num1

{124689}

>>> num.update(num1)  # 把num1集合中的所有元素添加到num集合中

>>> num

{123456789}

>>> num.update([10,11,12,13])

>>> num

{12345678910111213}  # 使用update方法添加多个元素

 集合的删除方法

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

>>> num

{1234579}

>>> num.pop()  # 随机删除集合中的一个元素

1

>>> num.pop()

2

>>> num

{34579}

>>> num.remove(7)  # 指定删除集合中的元素

>>> num

{3459}

>>> num.remove(7)  # 如果集合中没有这个元素就会报错

Traceback (most recent call last):

  File "<stdin>", line 1in <module>

KeyError: 7

>>> num

{3459}

>>> num.discard(4)  # 指定删除集合中的元素

>>> num

{359}

>>> num.discard(4)  # 如果集合中没有这个元素,不会报错

>>> num

{359}

>>> num.clear()  # 清空集合中的元素

>>> num

set()

 集合的复制

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

>>> num = {1,2,4,3,7,5}

>>> num1 = num  # 通过赋值来复制,如果原集合发生改变,复制的集合也会发生改变

>>> num1

{123457}

>>> num.add(9)

>>> num

{1234579}

>>> num1

{1234579}

 

>>> num = {1,2,4,3,7,5}

>>> num1 = num.copy()  # 深度copy,原集合发生改变,复制的集合不会发生改变,两个集合变得没有关系了

>>> num1

{123457}

>>> num.add(9)

>>> num

{1234579}

>>> num1

{123457}

 并集

并集:两个集合所有元素的集合

有两个方法,一个是用union()方法,一个是用“|”符号

1

2

3

4

5

6

7

8

>>> num

{123457}

>>> num1

{124689}

>>> num.union(num1)

{123456789}

>>> num|num1

{123456789}

 差集

差集:在一个集合中但不在另一个集合中的元素

有两个方法,一个是difference()方法,一个是“-”符号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

>>> num

{123457}

>>> num1

{124689}

>>> num.difference(num1)  # 在集合num中却不在集合num1中的元素

{357}

>>> num - num1  # 在集合num中却不在集合num1中的元素

{357}

>>> num1.difference(num)  # 在集合num1中却不在集合num中的元素

{896}

>>> num1 - num  # 在集合num1中却不在集合num中的元素

{896}

>>> num.difference_update(num1)  # 把在集合num中却不在集合num1中的元素赋给集合num

>>> num

{357}

 对称差集

对称差集:两个集合中,只在一个集合和只在另一个集合里的元素

有两个方法,一个是symmetric_difference()方法,一个是“^”符号

1

2

3

4

5

6

7

8

9

10

11

>>> num

{123457}

>>> num1

{124689}

>>> num.symmetric_difference(num1)  # 只在集合num中和只在集合num1中的元素

{356789}

>>> num ^ num1  # 只在集合num中和只在集合num1中的元素

{356789}

>>> num.symmetric_difference_update(num1)  # 把只在集合num中和只在集合num1中的元素赋给集合num

>>> num

{356789}

交集

交集:在一个集合中,也在另一个集合中的元素

有两个方法,一个是intersection()方法,一个是“&”符号

1

2

3

4

5

6

7

8

9

10

11

>>> num

{123457}

>>> num1

{124689}

>>> num.intersection(num1)  # 集合num和集合num1的交集

{124}

>>> num & num1  # 集合num和集合num1的交集

{124}

>>> num.intersection_update(num1)  # 把集合num和集合num1的交集赋给集合num

>>> num

{124}

 集合关系的判断

 判断两个集合是否相等

1

2

3

4

5

6

7

8

>>> num

{123457}

>>> num1

{124689}

>>> num == num1  # 判断集合num和集合num1是否相等

False

>>> num != num1  # 判断集合num和集合num1是否不相等

True

 判断元素是否在集合中

1

2

3

4

5

6

7

8

9

10

>>> num

{123457}

>>> 1 in num  # 判断元素1是否在集合num中

True

>>> 6 in num  # 判断元素6是否在集合num中

False

>>> 1 not in num  # 判断元素1是否不在集合num中

False

>>> 6 not in num  # 判断元素6是否不在集合num中

True

 判断集合是否相交

1

2

3

4

5

6

7

8

9

10

>>> num

{123457}

>>> num1

{124689}

>>> num2

{89}

>>> num.isdisjoint(num1)  # 判断集合num和集合num1是否不相交

False

>>> num.isdisjoint(num2)  # 判断集合num和集合num2是否不相交

True

 判断集合的包含关系

1

2

3

4

5

6

7

8

9

10

11

12

>>> num

{123457}

>>> num1

{123}

>>> num.issuperset(num1)  # 判断集合num是否包含集合num1

True

>>> num >= num1  # 判断集合num是否包含集合num1

True

>>> num1.issubset(num)  # 判断集合num1是否被集合num包含

True

>>> num1 <= num  # 判断集合num1是否被集合num包含

True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值