首页 > 编程语言 >Python语法之集合

Python语法之集合

时间:2022-10-03 17:32:45浏览次数:85  
标签:笑傲江湖 novels Python 鹿鼎记 元素 语法 print 集合

集合是无序元素的集合,集合中的元素不可重复,并且创建完成后,其中的元素不可更改。但是整个集合是可以更改的,我们可以向其增加元素,也可以从中删除元素。也就是说,我们无法修改集合中的元素,但是我们可以对整个集合进行添加或者是删除等更改的操作。 集合的创建非常简单,只需要将以逗号分隔的元素放在花括号 {} 中,{元素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() 和 | 操作符。 图片.png

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() 和 & 实现不同集合间的交集。 图片.png

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 的元素集合。 图片.png

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 的交集。 图片.png

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 = {'白马啸西风', '鹿鼎记', '笑傲江湖', '书剑恩仇录', '神雕侠侣', '侠客行', '倚天屠龙记', '碧血剑', '鸳鸯刀'}的并集,交集,差集和对称差集。

标签:笑傲江湖,novels,Python,鹿鼎记,元素,语法,print,集合
From: https://blog.51cto.com/u_15641375/5730418

相关文章

  • Markdowm 的一些常用语法
    Markdowm的一些常用语法声明(叠甲):鄙人水平有限,本文章仅供参考。且本文章是一个不全的分享,只有我目前用的比较多的语法,如果有什么错误,欢迎大家指正。具体可以查看该网......
  • Python SQLite3 基本操作类
    #!/usr/bin/envpython#encoding:utf-8"""@version:v1.0@author:W_H_J@license:ApacheLicence@contact:[email protected]@software:PyCharm@f......
  • python类型注解
    python类型注解functionannotation写法:使用冒号:加类型代表参数类型默认值参数示例:b:int=2使用->加类型代表返回值类型python解释器运行时并不会检查类型......
  • 使用Python实现读取TXT小说文件按每一回显示打印出来
    大家好,我是皮皮。一、前言前几天在Python铂金交流群【红色基因代代传】问了一个Python处理的问题,提问截图如下:文件里边的部分截图如下:大概的需求如下所示:二、实现过程这里【......
  • 盘点一个Python抓取有道翻译爬虫中的报错问题
    大家好,我是皮皮。一、前言前几天在Python白银交流群【斌】问了一个Python网络爬虫的问题,提问截图如下:报错截图如下:粉丝需要的数据如下:二、实现过程有道翻译之前有做过很多,确......
  • 将你的 Python 脚本转换为命令行程序
    使用Python中的​​scaffold​​​和​​click​​库,你可以将一个简单的实用程序升级为一个成熟的命令行界面工具。在我的职业生涯中,我写过、用过和看到过很多随意的......
  • Lua-基本语法
    Lua作为动态语言,变量定义的时候不需要声明类型。Lua数据类型--nil表示一个无效值,在条件判断语句中表示false.--boolean表示false和true.--number数值,无论是浮点......
  • 常见工程、应用、学习错误及安装问题之Python
    ​​pip临时使用国内镜像源​​​​python创建文件夹​​​​python读取文件下所有文件路径​​​​将numpy中的True/False转换成1/0​​​​使用python复制文件​​​​L......
  • 为python安装扩展模块时报错——error: invalid command 'bdist_wheel'
    具体过程: devil@hp:~/lab$./bazel-bin/python/pip_package/build_pip_package/tmp/dmlab_pkg2022年10月03日星期一14:05:54CST:===Buildingwheelusage:setu......
  • 007.注入集合对象
           ......