Python集合

在Python中,集合是一个无序的不重复的序列。一般使用{}或者set()函数来创建。Tips:创建一个空的集合只能使用set(),因为{}是创建空字典用的,这个上节我们提到过。下面开始我们的快速学习:

创建一个空集合,我们先看下他们的结构:

a=set()

print(type(a),a)

set()

可以看到,classset是我们要的集合结构。下面我们看下集合是怎么初始化的:

a=[1,2,3,4,5]

print(type(a),a)

b=set(a)

print(type(b),b)

[1, 2, 3, 4, 5]

在这里我们先创建了一个list,然后把list当做参数传给了set这样我们就得到了我们想要的集合。这里有人要问了,初始化集合必须要先初始化一个list么?不着急,我们换一个类型试试,看能不能创建集合:

a=1

b=2

c=set()

print(type(c),c)

先创建了两个int类型,然后在初始化集合的时候,把他们两个都传了进去,果然还是可以得到我们想要的结果。

就这一种初始化方法么?当然不是了,看下面:

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

print(type(a),a)

我们同样可以直接把上面的两步合成一步来搞定。

开头我们就说了,集合是一个无序不重复的序列,何以证明?我们给他初始化的时候放一些重复的数值试试:

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

print(type(a),a)

果然,如果我们传了重复的值,Python会自动给我们精简成1个。有同学问,上面那个{}不是一个字典初始化的方法么?为什么在这边成了集合的初始化方法了么?要记得,字典是什么?是一个键值对的存在,写个例子对比一下:

a={"a":1,"b":2}

print(type(a),a)

{'a': 1, 'b': 2}

对比一下,一样么?是吧。。。

下面我们说一下这个集合的操作,既然它是数据类型的集合,那么它肯定存在添加,删除,更新等操作,我们一个一个看一下,这个知道就行不需要去刻意记住。

添加:add()

a=set()

a.add(1)

a.add(2)

print(a)

更新:update()

a=set({1,2,3,4,5})

a.update([3,6,7])

print(a)

原来只有12345数字,更新的参数传的是367,由于3已经存在,根据集合不重复条约3直接抛弃,然后67不存在,那么就加入进来,最后形成1234567这样一个集合。

删除:remove()

a=set({1,2,3,4,5})

a.remove(1)

print(a)

这个没有什么好说的

删除操作除了remove()函数,还有一个pop()函数可以实现这个功能。有意思的事情来了,官网上说pop()函数会随机从集合中弹出一个子项,但是经过我多次试验,基本上每次弹出的是第一个子项,大家可以自己试试。

a=set({1,2,3,4,5})

a.pop()

print(a)

另外,pop()弹出的值我们是可以取到的。

在集合中除了上面的添加删除等操作,对于我们来说最重要的并不是这些操作,在后面人工智能的使用中,我们用的最多的其实是求交集并集等操作。

并集:union()

a=set({1,2,3,4,5})

b=set({9,8,7,6,5})

print(a.union(b))

本来是两个独立的集合,现在把他们合并成了一个大集合。Union()其实说白了就是一个“|”的操作所以上面的代码也可以这么写:

a=set({1,2,3,4,5})

b=set({9,8,7,6,5})

print(a|b)

这样我们得到的结果是一样的。

交集:intersection()

a=set({1,2,3,4,5})

b=set({9,8,7,6,5})

print(a.intersection(b))

同样这也是一个“&”操作,一样可以这么写:

a=set({1,2,3,4,5})

b=set({9,8,7,6,5})

print(a&b)

得到同样的结果。

既然有交集和并集,那么能不能列出两个集合的不同之处呢?

a=set({1,2,3,4,5})

b=set({9,8,7,6,5})

print(a.difference(b))

print(b.difference(a))

代码就不解释了,很简单。

当然,就算没有直接求不同的方法,我们也可以手动实现:

a=set({1,2,3,4,5})

b=set({9,8,7,6,5})

print(a-b)

print(b-a)

最后,我们还可以来求子集之间的关系:

a=set({1,2,3,4,5})

b=set({1,2,3})

print(b.issubset(a))

True

Issubset()函数就是来求是不是子集的问题。

当然有时候我们也以“

a=set({1,2,3,4,5})

b=set({1,2,3})

print(b.issubset(a))

print(b

print(b

print(a.issubset(b))

print(a

print(a

True

True

True

False

False

False

或者:

a=set({1,2,3,4,5})

b=set({1,2,3,4,5})

print(b.issubset(a))

print(b

print(b

print(a.issubset(b))

print(a

print(a

True

True

False

True

True

False

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180829G07M5E00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券