0
点赞
收藏
分享

微信扫一扫

自动化快速上手--python(19)--set集合

小安子啊 2022-01-28 阅读 42
python

        这里是清安,前面学了list列表,tuple元组,dict字典,本章我们就来学习一下set集合。

简洁

        集合 set 是装有独特值的无序袋子。一个简单的集合可以包含任何数据类型的值。如果有两个集合,则可以执行像联合、交 集以及集合求差等标准集合运算。

        那么具体什么是集合?

a_ = {1} 
print(a)
print(type(a_))

        打印后你能看到<class 'set'>,这就是集合,要创建只包含一个值的集合,仅需将该值放置于花括号之间。

a_ = {1, 2}
print(a_)

        要创建多值集合,请将值用逗号分开,并用花括号将所有值 包裹起来。

列表为基础的集合

        这个其实就是列表转集合的一种方式。

list_ = ['a', 'b', 'c']
print(set(list_))

        转换了之后list_是不是就是集合了呢,并不是。它还是列表。它是初始变量,初始值 就是列表,我们并没有改变初始值。只是输出转化。

空集合

a_ = set()
print(a_)

        空集合就直接不给值就好了,与其说值不如直接说成员更合适一些。

修改集合

添加值

add()

list_ = {'a', 'b', 'c'}
list_.add('qingan')
list_1 = {1, 2, 3}
list_1.add(4)
print(list_)
print(list_1)

        这里我举例了两个例子,字符串形式的,一个是整数类型的。为什么要举两个例子。

        字符串形式的,如果像上述这么写,print出来是无序的。前面说过了。随机排布,所以这里add后,值也是随机出现在四个字符串其中的某一个位置,每一次print位置可能不一样。但是如果是整数,就会按照原来的形式输出。并将add的值写在后面。

update()

list_ = {'a', 'b', 'c'}
list_.update({1, 2, 3})
print(list_)
list_.update({'qingan'}, {'wubieshi'})
print(list_)
list_.update([1, 2, 'qingan'])
print(list_)

        这里重点来了,我写了三种添加值的形式,这里不是叫你看无序了。看的是update()方法。

{'c', 1, 2, 3, 'a', 'b'}
{'c', 1, 2, 3, 'a', 'wubieshi', 'qingan', 'b'}
{'c', 1, 2, 3, 'a', 'wubieshi', 'qingan', 'b'}

        结果是这样的,不管是多个集合还是一个集合,还是列表。update() 方法仅接受一个集合作为参数,并将其所有成员添 加到初始列表中。其行为方式就像是对参数集合中的每个成员调用 add() 方法。 update() 方法还可接受一些其它数据类型的对象作为参数, 包括列表。如果调用时传入列表,update() 将会把列表中所有的元素添加到初始集合中。

        注意:这里还是有去重的。并不只是会添加值进去。

删除值

        有三种方法,有两种前面也是有所接触的。具体看看:

discard()

# 1
list_ = {1, 3, 5, 7, 9, 11}
list_.discard(7)
print(list_)

        discard() 接受一个单值作为参数,并从集合中删除该值。但是如果你删除一个不存在的值,它是不会报错的,例如list_discard(6)。

remove()

# 2
list_ = {1, 3, 5, 7, 9, 11}
list_.remove(7)
print(list_)

        remove() 方法也接受一个单值作为参数,也从集合中将其删除。  如果删除一个不存在的值它会抛出异常,告诉你错误,例如list_remove(6)。

Traceback (most recent call last):
  File "F:\selenium_demo\shopX_demo\index\book.py", line 12, in <module>
    list_.remove(6)
KeyError: 6

pop()

list_ = {'1', '3', '5', 7, '9', 11}
list_.pop()
print(list_)

        pop() 方法从集合中删除某个值,并返回该值。然而,由于 集合是无序的,并没有 最后一个 值的概念,因此无法控制删 除的是哪一个值。它基本上是随机的。这也是这里为什么不用整数做演示的原因,别弄混了。此方法自己多运行看结果。

clear()

list_ = {'1', '3', '5', 7, '9', 11}
list_.clear()
print(list_)

        clear() 方法删除集合中 所有 的值,留下一个空集合。它等价于 a_set = set(),该语句创建一个新的空集合,并用之覆盖a_set 变量的之前的值。

        如果你clear()后还运行了pop(),亦或者其他的方法就会抛出异常哦。

常见集合操作

是否存在集合中

list_ = {1, 3, 5, 7, 9, 11}
i = 7 in list_
print(i)

        这个用法还是很常见得,用于判断7是否存在于list_集合中。返回TRUE  OR   FALSE

union()并集

list_ = {1, 3, 5, 7, 9, 11}
list_1 = {2, 4, 6, 8, 10, 12}
o = list_.union(list_1)
print(o)

        将两集合整理成一个新的集合,去重!

intersection()交集

list_ = {1, 3, 5, 7, 9, 11}
list_1 = {1, 2, 4, 6, 8, 10, 12}
i = list_.intersection(list_1)
print(i)

        intersection() 方法返回一个新集合,其中装着 "同时" 在两个集合中出现的所有元素。

difference()求差

list_ = {1, 3, 5, 7, 9, 11}
list_1 = {1, 3, 4, 6, 8, 10, 12}
i = list_.difference(list_1)
print(i)

        difference() 方法返回的新集合中,输出list_中有list_1中没有的值。

symmetric_difference()

list_ = {1, 3, 5, 7, 9, 11}
list_1 = {1, 3, 4, 6, 8, 10, 12}
i = list_.symmetric_difference(list_1)
print(i)

        symmetric_difference() 方法返回一个新集合,其中装着所只在其中一个 集合中出现的元素。也就有点类似于,把两个集合中重复的值去掉了。

举报

相关推荐

0 条评论