python~集合详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37579123/article/details/83658975

集合的基本操作

首先需要明确的是:集合(set)是一个无序的不重复元素序列,多用来进行排重;不支持切片和索引取值!

1.创建集合

>>> a={1,2,4,4}

>>> a

{1, 2, 4}

>>> type(a)

<class 'set'>

**创建空集合时需要注意:不能直接用大括号,只能用set();否则创建的是一个字典

>>> b=set()

>>> type(b)

<class 'set'>

>>> c={}

>>> type(c)

<class 'dict'>

2.添加元素

add()方法是将要添加的元素作为一个整体添加到集合中如果元素已经存在,则不进行任何操作

>>> a={1,3,5}

>>> a.add(1)

>>> a

{1, 3, 5}

>>> a.add(2)

>>> a

{1, 2, 3, 5}

>>> a.add((7,8))

>>> a

{1, 2, 3, 5, (7, 8)}

update()方法是把要添加元素拆分成单个元素,去掉重复的之后存于集合中或者理解为添加多个元素,参数可以是列表、元组、字典等,多个元素间用逗号隔开

>>> a={1}

>>> a.update([2,3,4])

>>> a

{1, 2, 3, 4}

>>> a.update({"a","b"})

>>> a

{1, 2, 3, 4, 'b', 'a'}

>>> a.update({"a","b"},[5,6])

>>> a

{1, 2, 3, 4, 'b', 5, 6, 'a'}

3.删除元素

pop删除任意的元素并返回该元素

>>> b={"a",1,4,7}

>>> b.pop()

'a'

>>> b.pop()

4

>>> b

{1, 7}

remove当删除的元素在集合中就删除,当元素不存在集合中则引发异常KeyError

>>> b={"a",1,4,7}

>>> b.remove(6)

Traceback (most recent call last):

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

KeyError: 6

>>> b.remove(7)

>>> b

{'a', 4, 1}

discard当删除的元素不在集合中,返回None不会引发异常;在集合中则删除

>>> b={5,2,8,4}

>>> b.discard(9)

>>> b.discard(8)

>>> b.discard(4)

>>> b

{2, 5}

clear()用于清空集合中的所有元素

>>> s={1,2,3}

>>> s.clear()

>>> s

set()

4.成员运算符:in/not in

>>> a=set([1,2])

>>> 1 in a

True

>>> 3 in a

False

>>> 3 not in a

True

5.运算符判断集合间的关系:> 包含;< 被包含;== 相等

>>> a=set([2,3,4,5])

>>> b=set([3,4])

>>> a>b

True

>>> a<b

False

>>> a==b

False

 

>>> a=set([2,3,4,5])

>>> b=set([2,3,4,5,6,7])

>>> a>b

False

>>> a<b

True

>>> a==b

False

 

>>> a=set([1,2])

>>> b=set([1,2])

>>> a>b

False

>>> a<b

False

>>> a==b

True

>>> a>=b

True

>>> a<=b

True

6.交集:使用符号&或(intersection),返回两个集合的共同元素组成的集合,即集合的交集

>>> st1=set("a","b")

Traceback (most recent call last):

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

TypeError: set expected at most 1 arguments, got 2   

>>> st1=set("a")

>>> st2=set("b")

>>> st1&st2

set()

>>> st1=set("abc")

>>> st2=set("bcde")

>>> st1

{'b', 'c', 'a'}

>>> st2

{'d', 'b', 'e', 'c'}

>>> st1&st2

{'b', 'c'}

 

>>> a=range(1,5)

>>> b=range(3,8)

>>> set(a)&set(b)

{3, 4}

>>> set(a).intersection(set(b))

{3, 4}

7.并集:使用符号|或(union),返回两个集合的所有元素组成的集合,即集合的并集

>>> st1

{'b', 'c', 'a'}

>>> st2

{'d', 'b', 'e', 'c'}

>>> st1|st2

{'d', 'a', 'b', 'e', 'c'}

 

>>> a=range(1,5)

>>> b=range(3,8)

>>> set(a)|set(b)

{1, 2, 3, 4, 5, 6, 7}

>>> set(a).union(set(b))

{1, 2, 3, 4, 5, 6, 7}

8.差集:使用符号-或(difference),存在于前者,但不存在于后者的元素组成的集合

>>> st1

{'b', 'c', 'a'}

>>> st2

{'d', 'b', 'e', 'c'}

>>> st1-st2

{'a'}

>>> a=range(1,5)

>>> b=range(3,8)

>>> set(a)-set(b)

{1, 2}

>>> set(b)-set(a)

{5, 6, 7}

>>> set(a).difference(set(b))

{1, 2}

>>> set(b).difference(set(a))

{5, 6, 7}

9.补集:全集减去子集

>>> a=range(1,5)

>>> b=range(3,8)

>>> (set(a)|set(b))-set(a)   #a的补集

{5, 6, 7}

>>> (set(a)|set(b))-set(b)   #b的补集

{1, 2}

10.函数判断集合间的关系

issuperset()方法所用是判断集合st1是否是集合st2的父集,如果返回是True,否则返回False

>>> st1=set([1,2,3,4,5])

>>> st2=set([1,3])

>>> st1.issuperset(st2)

True

issubset()方法所用是判断集合st2是否是集合st1的子集,如果返回是True,否则返回False

>>> st1=set([1,2,3,4,5])

>>> st2=set([1,3])

>>> st2.issubset(st1)

True

不可变集合:

不支持添加、删除和索引,可进行遍历操作

>>> a=frozenset([1,2,3])

>>> a

frozenset({1, 2, 3})

>>> type(a)

<class 'frozenset'>

>>> list(a)

[1, 2, 3]

猜你喜欢

转载自blog.csdn.net/weixin_37579123/article/details/83658975
今日推荐