Python标准数据类型(四)集合

集合,与之前提到的元组看起来会比较相似,但是与元组又有很大的区别。
最显著的区别有:
元组时不可变数据类型,集合是可变数据类型

创建

>>> s = {1,2,3};s
{1, 2, 3}
>>> type(s)

>>> s = set();s
set()
>>> type(s)

切记:空集合的创建只能用set(),不能用{},也不能用()

>>> s = {}
>>> s
{}
>>> type(s)

# 直接用{}创建的是字典
>>> s = ()
>>> type(s)

# 直接用()创建的是元组

添加(add)

# 可以添加多个元素,但必须要用`()`包起来
>>> s = set()
>>> s.add((1,2,'a','b'))
>>> s
{(1, 2, 'a', 'b')}
#若添加的元素已经存在,不会发生改变
>>> s = set()
>>> s.add(1)
>>> s
{1}
>>> s.add((1,2,3))
>>> s
{1, (1, 2, 3)}
>>> s.add(1)
>>> s
{1, (1, 2, 3)}
>>> s.add((1))
>>> s
{1, (1, 2, 3)}

更新(update)

update与add大致相同,都可用于将新的元素添加进集合中,但add将字符串作为一个整体放入,
而update会将字符串拆散

>>> s = set()
>>> s.update((1,2,3))
>>> s
{1, 2, 3}
>>> s1 = set()
>>> s2 = set()
>>> s1.add(('hello'))
>>> s2.update(('hello'))
>>> s1
{'hello'}
>>> s2
{'l', 'e', 'h', 'o'}

移除(remove)

>>> s.remove((1,2,3))
>>> s
{1}

若移除的元素不是集合中的元素,则会出现KeyError

>>> s
{1}
>>> s.remove(4)
Traceback (most recent call last):
  File "", line 1, in 
    s.remove(4)
KeyError: 4

抛弃(discard)

discard与remove基本一样,都用于删除内容,最大的区别在于若元素不在集合内,discard后不会报错

>>> s
{1, (1, 2, 3)}
>>> s.discard(1);s
{(1, 2, 3)}
>>> s.discard(4)

弹出(pop)

集合中的pop与列表中原理上是一致的,但是也存在一定区别:
1> set中的pop,不能加入参数,否则会报错

>>> a={1,(9,2),3}
>>> a.pop(1)
Traceback (most recent call last):
  File "", line 1, in 
    a.pop(1)
TypeError: pop() takes no arguments (1 given

2> set中的pop,是随机弹出集合中的一个元素,不一定弹出第一个

>>> a={1,(9,2),3}
>>> a.pop()
(9, 2)

复制(copy)

>>>a={1,(9,2),3}
>>>b=a.copy()
>>>a
{(9, 2), 1, 3}
>>>b
{(9, 2), 1, 3}

查看a和b的id,会发现id值时不相同的,因此a发生改变,不是不会变的

>>> id(a)
1934732752264
>>> id(b)
1934732752936
>>> a.pop()
(9, 2)
>>> a
{1, 3}
>>> b
{(9, 2), 1, 3}

清空(clear)

>>> b
{(9, 2), 1, 3}
>>> b.clear()
>>> b
set()

清空后即为空集合

拼接(union)

将两个集合拼接,并返回一个新集合
若有重复项会被覆盖掉

>>> a = {1,2,3}
>>> b = a.union({3,4});b
{1, 2, 3, 4}
>>> c = a.union('b')
>>> c
{1, 2, 3, 'b'}

对比(difference & difference_update)

difference:
与其他一个集合或多个集合对比,返回一个与其他集合不一样元素的集合。

>>> a = {1,2,3,4}
>>> b = {2,3,5,7}
>>> a.difference(b)
{1, 4}
>>> b.difference(a)
{5, 7}

difference_update:
与其他一个集合或多个集合对比,删除集合与其他集合一样的元素,不返回新集合。

>>> a = {1,2,3,4}
>>> b = {2,3,5,7}
>>> a.difference_update(b)
>>> a
{1, 4}

交集(intersection & intesection_update)

intersection:
返回一个和其他集合共同有的元素的集合

>>> a = {1,2,3,4}
>>> b = {2,3,5,7}
>>> b.intersection(a)
{2, 3}
>>> a.intersection(b)
{2, 3}

intersection_update:
与其他一个集合或多个集合对比,删除集合中与其他集合不共有的元素,不返回新集合

>>> a = {1,2,3,4}
>>> b = {2,3,5,7}
>>> a.intersection_update(b)
>>> a
{2, 3}
>>> b
{2, 3, 5, 7}

isdisjoint

判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

>>> a = {1,2,3,4}
>>> b = {1,5,6,7}
>>> c = {5,6,7,}
>>> b.isdisjoint(a)
False
>>> c.isdisjoint(a)
True

issuperset

判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False。

>>> a
{1, 2, 3, 4, 5}
>>> b = {1,2,3}
>>> c = {1,2,3,6}
>>> b.issuperset(a)
False
>>> a.issuperset(b)
True
>>> a.issuperset(c)
False
>>> 

参考文献:
参考1
参考2
参考3

你可能感兴趣的:(Python,标准数据类型)