(Python)集合、集合的函数

时间:2024-01-21 20:46:33

本节我们将学习python的另一种数据类型:集合(set)


1.集合(set)


集合在Python中是一种没有重复元素,且无序的数据类型,且不能通过索引来引用集合中的元素

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> set(basket)
set(['orange', 'pear', 'apple', 'banana'])

set1-set2来获得在set1中的元素在set2中不存在的元素,返回一个新的集合。该功能和set1.difference(set2)的效果一样

(Python)集合、集合的函数

>>> f=set([1,2,3,4,5])
>>> c=set([3,4,5,6])
>>> f.difference(c)
set([1, 2])
>>> list(f)
[1, 2, 3, 4, 5]
>>> f-c
set([1, 2])

set1|set2 获得在set1或set2中的元素,返回一个新的集合

(Python)集合、集合的函数

>>> f=set([1,2,3,4,5])
>>> c=set([3,4,5,6])
>>> f|c
set([1, 2, 3, 4, 5, 6])

set1&set2 获得在set1和set2中均存在的元素,返回一个新的集合

(Python)集合、集合的函数

>>> f=set([1,2,3,4,5])
>>> c=set([3,4,5,6])
>>> f&c
set([3, 4, 5])

set1^set2 获得在set1或set2中存在,但不包括在set1和set2中都存在的元素,返回一个新的集合

(Python)集合、集合的函数

>>> f=set([1,2,3,4,5])
>>> c=set([3,4,5,6])
>>> f^c
set([1, 2, 6])

2.集合的函数

set.add(x) 新增一个元素x,如果集合中已经存在x,则不会新增到集合中

>>> f=set([3,4,5,6])
>>> f.add('a')
>>> f
set(['a', 3, 4, 5, 6])
>>> f.add('a')
>>> f
set(['a', 3, 4, 5, 6])

set.clear()清空集合

>>> f=set([3,4,5,6])
>>> f.clear()
>>> f
set([])

set.copy()复制一个集合

>>> f=set([3,4,5,6])
>>> s=f.copy()
>>> s
set([3, 4, 5, 6])

set1.difference(set2) 获得在set1中的元素在set2中不存在的元素,返回一个新的集合.与set1-set2相同

>>> f=set([3,4,5,6])
>>> s=set([1,2,3,4,5])
>>> s.difference(f)
set([1, 2])

set1.difference_update(set2) 更新set1,使set1=set1-set2

>>> s=set([1,2,3,4,5])
>>> s.difference_update(f)
>>> s
set([1, 2])

set.discard(x) 删除集合中值为x的元素

>>> s=set([1,2,3,4,5])
>>> s.discard(3)
>>> s
set([1, 2, 4, 5])

set1.intersection(set2) 返回set1和set2中均存在的元素,与set1&set2的效果相同

>>> f=set([3,4,5,6])
>>> s=set([1,2,3,4,5])
>>> f.intersection(s)
set([3, 4, 5])

set1.intersection_update(set2) 更新set1,使set1等于set1^set2

>>> f=set([3,4,5,6])
>>> s=set([1,2,3,4,5])
>>> f.intersection_update(s)
>>> f
set([3, 4, 5])

set1.isdisjoint(set2) 判断set1与set2是否有相同的元素,如果有,返回false,没有返回true

>>> f=set([3,4,5,6])
>>> s=set([1,2,3,4,5])
>>> q=set([1,0])
>>> f.isdisjoint(s)
False
>>> f.isdisjoint(q)
True

set1.issubset(set2)判断set1是否是set2的子集,如果是,返回true,否则返回false

>>> f=set([1,2])
>>> q=set([3,4,5,6,7])
>>> s=set([1,2,3,4,5])
>>> f.issubset(q)
False
>>> f.issubset(s)
True

set1.issuperset(set2)判断set1是否包含了set2,即set2是否是set1的子集,如果是,返回true,否则返回false

>>> f=set([1,2])
>>> s=set([1,2,3,4,5])
>>> f.issuperset(s)
False
>>> s.issuperset(f)
True

set.pop() 删除集合中排序最小的元素,并返回该数

>>> s=set([3,4,2,1,3])
>>> s.pop()
1

set.remove(x)删除集合中值为x的元素,如果x不存在,则会引发一个错误

>>> s=set([3,4,2,1,3])
>>> s.remove(3)
>>> s
set([1, 2, 4])
>>> s.remove(10) Traceback (most recent call last):
File "<pyshell#347>", line 1, in <module>
s.remove(10)
KeyError: 10

set1.symmetric_difference(set2),取set1和set2中不同时存在的元素,组成一个新的集合,并返回,同set1^set2相同

>>> s=set([1,2,4])
>>> f=set([2,4,5,6])
>>> f.symmetric_difference(s)
set([1, 5, 6])

set1.symmetric_difference_update(set2),更新set1,使set1=set1^set2

>>> s=set([1,2,4])
>>> f=set([2,4,5,6])
>>> f.symmetric_difference_update(s)
>>> f
set([1, 5, 6])

set1.union(set2) 取set1与set2的元素,组成一个新的集合,并返回,同:set1|set2

>>> s=set([1,2,4])
>>> f=set([2,4,5,6])
>>> s.union(f)
set([1, 2, 4, 5, 6])

set1.update(set2) 更新set1,使set1=set1|set2

>>> s=set([1,2,4])
>>> f=set([2,4,5,6])
>>> s.update(f)
>>> s
set([1, 2, 4, 5, 6])