继续创作,加快成长!这是我参加「掘金日新方案 10 月更文应战」的第4天,点击检查活动概况
调集是无序元素的调集,调集中的元素不行重复,而且创立完成后,其间的元素不行更改。可是整个调集是能够更改的,咱们能够向其增加元素,也能够从中删去元素。也便是说,咱们无法修正调集中的元素,可是咱们能够对整个调集进行增加或者是删去等更改的操作。
调集的创立非常简单,只需要将以逗号分隔的元素放在花括号 {}
中,{元素1,元素2,元素3,...,元素n}
。
1.调集的创立
不知道咱们是否有个武侠梦呢,我从小就喜欢看武侠小说,以及依据小说改编的各种电视剧,独爱的便是气度翩翩的赵敏,黎姿版的赵敏真的是一眸一笑家喻户晓…
咱们来创立一个名为 novels 的调集,调集中的元素为武侠小说的称号,让咱们在调集的世界里畅游武侠江湖!
novels = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print(novels)
调集中的元素不行重复,假如有重复元素,重复的元素将被疏忽。
novels = {'飞狐别传', '飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print(novels)
调集中有两个元素 '飞狐别传'
,可是打印的调集中,只显示一个飞狐别传,调集中的第二个元素 '飞狐别传'
被认定为是重复元素,被疏忽,没有显示。
2.调集的拜访
在介绍调集时,提到了调集中的元素是无序的!(列表、元组都是有序的)
元素的次序主要应用在索引中,调集中的元素是无序的,也就无法应用索引进行拜访了。
那么拜访调集中的元素能够经过哪些方式呢?
咱们能够经过 for
循环来遍历调集的元素,别的,还能够运用 in
关键字来判别调集中是否存在某个元素。
咱们首要来看经过 for
循环遍历调集的元素。
2.1 for循环
novels = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
for novel in novels:
print(novel)
2.2 in
运用 in
关键字来判别调集中是否存在某个元素,假如元素在调集内,回来 True
,假如元素不在调集内,回来 False
,运转下方句子:
novels = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print('鸳鸯刀' in novels)
print('越女剑' in novels)
3.调集的修正
能够对整个调集进行一些修正。
3.1 add() and update()
add()
和 update()
都可用于向调集增加元素。
语法规则为:调集名.add(元素名)
、调集名.update({元素1,元素2,...,元素n})
咱们看到 add()
和 update()
的一个差异是 add()
增加的是一个元素;update()
增加的是调集或者是列表,增加的是多个元素。
novels = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记'}
novels.add('笑傲江湖')
print(novels)
novels.add('书剑恩仇录')
print(novels)
novels.add('神雕侠侣')
print(novels)
novels.update({'侠客行', '倚天屠龙记'}) # update 的参数为调集
print(novels)
novels.update(['碧血剑', '鸳鸯刀'])
print(novels) # update 的参数为列表
履行 add()
和 update()
的句子后,在调集结尾处增加了相应的元素。
3.2 discard() and remove()
除了能够对整个调集增加元素,咱们还能够删去调集中的元素。
discard()
和 remove()
用于从调集中删去元素。
语法规则为:调集名.discard()
、调集名.remove()
。这两个函数的差异在于,从调集中删去一个不存在的元素时,discard()
不会履行任何操作,而 remove()
会抛出一个异常。
3.2.1 删去存在的元素
首要看一下删去存在的元素,discard()
和 remove()
的运用是相同的,结果也是相同的。
novels = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
novels.discard('飞狐别传')
print(novels)
novels.remove('雪山飞狐')
print(novels)
3.2.2 删去不存在的元素
对于删去不存在的元素,discard()
不会履行任何操作,而 remove()
会抛出一个异常。
咱们在删去调集中的元素时,要灵活掌握这些方法!
4.调集的操作
在数学中,也学习到了调集的相关概念,在数学中,咱们能够对调集进行一系列的操作,比方并集、交集和差集。Python 中的调集,咱们也能够做相应的操作,完成 Python 调集的并集、交集和差集。
咱们先一同来看下 Python 中调集的并集:
4.1 并集
在数学中,关于并集的界说是:给定两个调集A,B,把他们一切的元素兼并在一同组成的调集,叫做调集 A 与调集 B 的并集,记作 A∪B,读作 A 并 B。
Python 中的并集也是一个含义,将调集 A 和调集 B 的一切元素兼并在一同,就组成了调集 A 和调集 B 的并集。Python 中,完成调集并集能够运用 union()
和 |
操作符。
4.1.1 union()
咱们先来看下运用 union()
完成调集的并集,语法规则为:调集1.union(调集2)
,运转下方句子:
novels_1 = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖'}
novels_2 = {'鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print(novels_1.union(novels_2))
print(novels_2.union(novels_1))
4.1.2 |
也能够运用 |
对两个调集进行并集的运算,语法规则为 调集1|调集2
,运转下方句子:
novels_1 = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖'}
novels_2 = {'鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print(novels_1 | novels_2)
4.2 交集
继续一同来看交集:
A,B 是两个调集,由一切归于调集 A 且归于调集 B 的元素所组成的调集,叫做调集 A 与调集 B 的交集(intersection),记作 A∩B。咱们运用 intersection()
和 &
完成不同调集间的交集。
4.2.1 intersection()
能够完成调集 A 和调集 B 的交集运算,语法规则是 调集1.intersection(调集2)
,运转下方句子 :
novels_1 = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖'}
novels_2 = {'鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print(novels_1.intersection(novels_2))
print(novels_2.intersection(novels_1))
4.2.2 &
&
也能够完成调集 A 和调集 B 的交集运算,语法规则是 调集1 & 调集2
,运转下方句子:
novels_1 = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖'}
novels_2 = {'鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print(novels_1 & novels_2)
4.3 差集
调集 A 和调集 B 中,只归于其间一个调集,不归于另一个调集的元素。比方归于调集 A 不归于调集 B 的元素调集,或者是归于调集 B 不归于调集 A 的元素调集。
4.3.1 difference()
能够运用 difference()
来完成差集的运算,语法规则为调集1.difference(调集2)
:即完成归于调集 1 不归于调集 2 的差集,咱们一同运转下方句子:
novels_1 = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖'}
novels_2 = {'鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print(novels_1.difference(novels_2))
print(novels_2.difference(novels_1))
当调集 novels_1 在 difference()
之前时,打印的是归于调集 novels_1 不归于调集 novels_2 的元素调集,调集 novels_2 在 difference()
之前时,打印的是归于调集 novels_2 不归于调集 novels_1 的元素调集。
4.3.2 -
咱们能够运用-
来完成差集的运算,语法规则为 调集1-调集2
:即完成归于调集 1 不归于调集 2 的差集,咱们一同运转下方句子:
novels_1 = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖'}
novels_2 = {'鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print(novels_1 - novels_2)
print(novels_2 - novels_1)
4.4 对称差集
对称差集便是归于调集 A,不归于调集 B 的以及归于调集 B 不归于调集 A 的元素调集,便是调集 A 与调集 B 的并集减去调集 A 与调集 B 的交集。
4.4.1 symmetric_difference()
咱们能够运用 symmetric_difference()
来完成对称差集的运算,语法规则是:调集1.symmetric_difference(调集2)
,一同来运转下方句子:
novels_1 = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖'}
novels_2 = {'鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print(novels_1.symmetric_difference(novels_2))
print(novels_2.symmetric_difference(novels_1))
4.4.2 ^
咱们能够运用 来完成对称差集的运算,语法规则是:调集1^调集2
,一同来运转下方句子:
novels_1 = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖'}
novels_2 = {'鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
print(novels_1 ^ novels_2)
print(novels_2 ^ novels_1)
5.试一试
求调集 novels_1 = {'飞狐别传', '雪山飞狐', '连城诀', '天龙八部', '射雕英雄传', '白马啸西风', '鹿鼎记', '笑傲江湖', '书剑恩仇录'}
和novels_2 = {'白马啸西风', '鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}
的并集,交集,差集和对称差集。