集合添加元素python_Python 集合(Set)

Python 集合(Set)

在本文中,您将学习关于Python集的所有内容;如何创建它们、添加或删除其中的元素,以及在Python中对集合执行的所有操作。

Python中的集合是什么?

集合是项目的无序集合。每个元素都是唯一的(没有重复项),并且必须是不可变的(不能更改)。

但是,集合本身是可变的。我们可以在其中添加或删除项目。

集合可用于执行数学集合运算,例如并集,交集,对称差等。

如何创建集合?

通过将所有项目(元素)放在大括号{}中并用逗号分隔或使用内置函数来创建集合set()。

它可以具有任意数量的项目,并且它们可以具有不同的类型(整数,浮点数,元组,字符串等)。但是集合不能具有可变元素(例如list,set或dictionary)作为其元素。

示例# 整数集

my_set = {1, 2, 3}

print(my_set)

# 混合数据类型集

my_set = {1.0, "Hello", (1, 2, 3)}

print(my_set)

也尝试以下示例。

示例# 无重复集合

# 输出: {1, 2, 3, 4}

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

print(my_set)

#set不能包含可变项

#这里[3,4]是可变列表

#如果您取消注释第12行,

#这将导致错误。

# TypeError: unhashable type: 'list'

#my_set = {1, 2, [3, 4]}

# 我们可以从列表中生成集合

# 输出: {1, 2, 3}

my_set = set([1,2,3,2])

print(my_set)

创建一个空集有点特殊。

空括号{}将在Python中创建一个空字典。为了建立一个没有任何元素的集合,我们使用没有任何参数的set()函数。

示例# 用{}初始化

a = {}

# 检查a的数据类型

# 输出:

print(type(a))

# 初始化使用 set()

a = set()

# 检查a的数据类型

# 输出:

print(type(a))

如何在Python中更改集合?

集是可变的。但是由于它们是无序的,因此索引没有意义。

我们无法使用索引或切片来访问或更改集合的元素。集不支持它。

我们可以使用add()方法添加单个元素,使用update()方法添加多个元素。update()方法可以采用元组,列表,字符串或其他集合作为其参数。在所有情况下,都避免重复。

示例# 初始化 my_set

my_set = {1,3}

print(my_set)

# 如果取消注释第9行,

# 你会得到一个错误

# TypeError: 'set' object does not support indexing

#my_set[0]

# 增加一个元素

# 输出: {1, 2, 3}

my_set.add(2)

print(my_set)

# 增加多个元素

# 输出: {1, 2, 3, 4}

my_set.update([2,3,4])

print(my_set)

# 增加 list 和set

# 输出: {1, 2, 3, 4, 5, 6, 8}

my_set.update([4,5], {1,6,8})

print(my_set)

运行该程序时,输出为:{1, 3}

{1, 2, 3}

{1, 2, 3, 4}

{1, 2, 3, 4, 5, 6, 8}

如何从集合中删除元素?

可以使用discard()和remove()方法从集合中删除特定项目。

两者之间的唯一区别是,如果使用discard(),而项目不存在于集合中,则它保持不变。但是remove()在这种情况下会引发错误。

以下示例将说明这一点。

示例# 初始化 my_set

my_set = {1, 3, 4, 5, 6}

print(my_set)

# 抛弃一个元素

# 输出: {1, 3, 5, 6}

my_set.discard(4)

print(my_set)

# 移除已个元素

# 输出: {1, 3, 5}

my_set.remove(6)

print(my_set)

# 抛弃一个元素

# 没有出现在 my_set

# 输出: {1, 3, 5}

my_set.discard(2)

print(my_set)

# remove一个元素

# 没有出现在 my_set

# 如果没有注释#my_set.remove(2),

# 会抛出一个错误.

# Output: KeyError: 2

#my_set.remove(2)

同样,我们可以使用pop()方法删除并返回一个项目。

集合为无序,无法确定将弹出哪个项目。这是完全任意的。

我们还可以使用clear()方法删除集合中的所有项目。

示例# 初始化 my_set

# 输出: 唯一元素集

my_set = set("HelloWorld")

print(my_set)

# pop一个元素

# 输出: 随机元素

print(my_set.pop())

# pop 任意元素

# Output:随机元素

my_set.pop()

print(my_set)

# 清空 my_set

#输出: set()

my_set.clear()

print(my_set)

Python 集合操作

集合可用于执行数学集合运算,例如并集,交集,差和对称差。我们可以通过运算符或方法来实现。。

让我们考虑以下两组用于以下操作。>>> A = {1, 2, 3, 4, 5}

>>> B = {4, 5, 6, 7, 8}

集合并集

set-union.jpg

A和B的并集是来自这两个集合的所有元素的集合。

并集是使用|操作符执行的。也可以使用union()方法来完成。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 使用 | 运算符

# 输出: {1, 2, 3, 4, 5, 6, 7, 8}

print(A | B)

在Python shell上尝试以下示例。# 使用union 函数

>>> A.union(B)

{1, 2, 3, 4, 5, 6, 7, 8}

# 在B上使用并集函数

>>> B.union(A)

{1, 2, 3, 4, 5, 6, 7, 8}

集合相交

set-intersection.jpg

A和B的交集是在这两个集合中共有的一组元素。

交点使用&运算符执行。使用intersection()方法可以完成相同的操作。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 使用 & 运算符

# 输出 : {4, 5}

print(A & B)

在Python shell上尝试以下示例。# 在A上使用交集函数

>>> A.intersection(B)

{4, 5}

# 在B上使用交集函数

>>> B.intersection(A)

{4, 5}

集合差异

set-difference.jpg

A和B的差(A-B)是仅在A中但不在B中的一组元素。类似地,B-A是B中但不在A中的一组元素。

差异是使用 -运算符执行的。使用difference()方法可以完成相同的操作。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 在A上使用 - 运算符

# Output: {1, 2, 3}

print(A - B)

在Python shell上尝试以下示例。# 在A上使用差异函数

>>> A.difference(B)

{1, 2, 3}

# 在B上使用-运算符符

>>> B - A

{8, 6, 7}

# 在B上使用差异函数

>>> B.difference(A)

{8, 6, 7}

集合对称差异

set-symmetric-difference.jpg

A和B的对称差异是A和B中的一组元素,但两者中的元素相同。

对称差使用^运算符执行。使用symmetric_difference()方法可以完成相同的操作。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 使用 ^ 运算符

# 输出: {1, 2, 3, 6, 7, 8}

print(A ^ B)

在Python shell上尝试以下示例。# 在A上使用symmetric_difference函数

>>> A.symmetric_difference(B)

{1, 2, 3, 6, 7, 8}

# 在B上使用symmetric_difference函数

>>> B.symmetric_difference(A)

{1, 2, 3, 6, 7, 8}

不同的Python集合方法

集合方法很多,上面已经使用了其中的一些方法。这是set对象可用的所有方法的列表。Python Set方法方法描述

将元素添加到集合中

从集合中删除所有元素

返回集合的副本

返回两个或多个集合的差作为新集合

如果元素是成员,则从集合中删除它。(如果元素不在集合中,则不执行任何操作)

返回两个集合的交集作为新集合

True如果两个集合的交点为空,则返回

返回 True另一个集合是否包含此集合

返回 True此集合是否包含另一个集合

删除并返回一个任意的set元素。提高KeyError,如果集合为空

从集合中删除一个元素。如果元素不是成员,则引发一个KeyError

返回新集合中集合的并集

用自身和其他元素的并集更新集合

其他集合操作

集合会员资格测试

我们可以使用in关键字来测试项目是否存在于集合中。

示例# 初始化 my_set

my_set = set("apple")

# 检查“a”是否存在

# 输出: True

print('a' in my_set)

# 检查“p”是否存在

# 输出: False

print('p' not in my_set)

遍历集合

使用for循环,我们可以遍历集合中的每个项目。>>> for letter in set("apple"):

... print(letter)

...

a

p

e

l

集合与内置函数

内置函数如all()、any()、enumerate()、len()、max()、min()、sort()、sum()等常用来与set一起执行不同的任务。带内置功能功能描述

如果集合的所有元素都为true(或者集合为空),则返回True。

如果集合中的任何元素为true,则返回True。 如果集合为空,则返回False。

返回一个枚举对象。它包含成对的所有项的索引和值。

返回集合中的长度(项目数)。

返回集合中最大的项目。

返回集合中最小的项目。

从集合中的元素返回一个新的排序列表(不对集合本身进行排序)。

返回集合中所有元素的总和。

Python Frozenset

Frozenset是具有集合特征的新类,但是一旦分配,就不能更改其元素。元组是不可变列表,而冻结集是不可变集。

可变的集合不可散列,因此不能用作字典键。另一方面,frozenset是可哈希化的,可用作字典的键。

此数据类型支持的方法,如copy(),difference(),intersection(),isdisjoint(),issubset(),issuperset(),symmetric_difference()和union()。由于不可变,因此没有添加或删除元素的方法。

示例# 初始化 A 和 B

A = frozenset([1, 2, 3, 4])

B = frozenset([3, 4, 5, 6])

在Python shell上尝试这些示例。>>> A.isdisjoint(B)

False

>>> A.difference(B)

frozenset({1, 2})

>>> A | B

frozenset({1, 2, 3, 4, 5, 6})

>>> A.add(3)

...

AttributeError: 'frozenset' object has no attribute 'add'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【分享】 codeReview 的重要性

研发都知道代码 Review 的重要性,在代码 Review 也越来越受大家重视,我参与了大量的代码 Review,明显地感受到有效的代码 Review 不但能提高代码的质量,更能促进团队沟通协作,建立更高的工程质量标准,无论对…

线程02

2019独角兽企业重金招聘Python工程师标准>>> 线程中有几个方法需要我们区分 1 sleep方法是表示线程执行到这的时候只是暂时处于“睡眠”状态,在这种状态下线程是不会释放CPU资源的,当到达休眠时间后,线程继续“起来”干活。当线程…

@postconstruct注解方法没有执行_把对象的创建交给spring来管理(注解IOC)

自动按照类型注入/** * 账户的业务层实现类 * * 曾经XML的配置&#xff1a; * <bean id"accountService" class"com.itheima.service.impl.AccountServiceImpl" * scope"" init-method"" destroy-method""> * <pro…

Kubernetes初步学习

今天分享如题&#xff1a; Kubernetes 本篇内容源于工作项目需要自学 但K8s确实现在十分的主流so推荐给大家 最近更新缓慢由于工作太忙惹&#xff0c;忙里偷闲整理愿分享能与君共勉&#x1f4aa; 大家新年快乐&#x1f389; &#x1f508;言归正题&#xff0c;相信很多朋友…

CABAC编码

H&#xff0e;264&#xff0f;AVC标准采用了很多新技术和新方法&#xff0c;大大提高了视频编码效率&#xff0c;其中CABAC便是H&#xff0e;264&#xff0f;AVC采用的新型熵编码方法之一。CABAC采用了高效的算术编码思想&#xff0c;同时充分考虑了视频流相关统计特性&#xf…

【教程分享】Jmeter入门教程

好&#xff01;回归学长每周的教程分享&#xff01; PART2 >今天又来分享Jmter 因为最近好像有相关工作内容 提前准备资修一下 分享仅供参考- JMeter的作用对软件做压力测试 1.能够对HTTP和FTP服务器进行压力和性能测试&#xff0c; 也可以对任何数据库进行同样的测试&…

快速傅里叶变换python_FFT快速傅里叶变换的python实现过程解析

FFT是DFT的高效算法&#xff0c;能够将时域信号转化到频域上&#xff0c;下面记录下一段用python实现的FFT代码。 # encodingutf-8 import numpy as np import pylab as pl # 导入和matplotlib同时安装的作图库pylab sampling_rate 8000 # 采样频率8000Hz fft_size 512 # 采样…

rabbitmq的安装全过程

2019独角兽企业重金招聘Python工程师标准>>> 1 首先下载安装依赖elang 添加yum支持 cd /usr/local/src/ mkdir rabbitmq cd rabbitmq wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm rp…

【框架学习分享】HttpRunner

今天文章分为两部分 :) PART1 HttpRunner内容分享/ PART2 关于后厂村儿 10 Minutes HttpRunner: PART 1 首先感谢作者开源&#x1f44d; 因为最近工作需要用到HttpRunner&#xff0c; 于是便趁着周末学了下这个测试框架&#xff0c;感觉还可以~ 所以分享一下今天的学习记…

python报名_2019年少儿Python创意编程比赛报名时间

2019年Python创意编程比赛时间及相关规定&#xff1a;参赛对象 Python创意编程比赛设初中组和高中组。 全国各地初中、高中(含中等职业学校)在校学生均以个人名义报名参加。 参赛步骤 Python创意编程比赛分初评、复评和终评三个阶段&#xff0c;初评和复评以线上形式开展&#…

【分享】后厂村鲜为人知的另一面

好&#xff01;回归学长每周的杂谈分享&#xff01; 有人说“后厂村”像一座孤岛&#xff0c; 这里远离喧嚣&#xff0c;没有生活气息。 而刚刚到厂的学长&#xff0c; 却想和你分享他鲜为人知的另一面。 内容整理源于网络看客原创侵删 说起后厂村&#xff0c;也许是老北京人…

windows 下安装rabbitmq

2019独角兽企业重金招聘Python工程师标准>>> 1、下载 下载地址&#xff1a;http://www.rabbitmq.com/download.html 2、Windows上安装 2.1 安装安装Erlang 下载erlang&#xff1a;http://www.erlang.org/download/otp_win64_17.3.exe 安装&#xff1a; erlang安装完…

【Kubernetes】k8s 的基本使用指令

今天分享如题&#xff1a; Kubernetes 最近更新缓慢由于工作太忙惹&#xff0c;忙里偷闲整理愿能与君共勉&#x1f4aa; K8S对我来说是个新的技术栈&#xff0c;程序员就是需要一直充电&#x1f50b; 加油&#xff0c;一起进步&#x1f4aa; 结构模型 k8s 是经典的一对多模…

c语言 malloc_C语言快速入门——动态内存分配

在前面一系列的字符串操作中&#xff0c;我们都是先定义一个固定大小的字符数组&#xff0c;然后根据所需&#xff0c;或拷贝、或连接、或格式化来为这个数组提供内容。固定大小的数组意味着在程序运行期间&#xff0c;数组所占用的内存是确定的(即划分了固定数量的内存)&#…

【经验分享】工程开发与Coding规范

今天分享分为两部分 :) PART01 工程开发代码规范分享/ PART02 关于某易云自动签到听歌分享- 5Mins DevCoding Rule: PART 1 了解真实工程开发&#x1f3d7;..... 本篇内容分享的宗旨: 学长工作经验之谈仅作分享&#x1f3f7; Ready,Go 代码管理——工具篇 •工程上首先需要…

过滤器与拦截器区别

过滤器与拦截器区别 参考&#xff1a;http://www.cnblogs.com/dreamroute/p/4198087.html?utm_sourcetuicool 过滤器 过滤器是一个程序&#xff0c;它先于与之相关的servlet或JSP页面运行在服务器上。它是随你的web应用启动而启动的&#xff0c;只初始化一次&#xff0c;以后就…

二进制-高效位运算

数独 数独是介绍位运算的好例子&#xff0c;运用位运算和不运用效率差别还是挺大的。我们先看数独需求: 1、当前数字所在行数字均含1-9&#xff0c;不重复 2、当前数字所在列数字均含1-9&#xff0c;不重复 3、当前数字所在宫&#xff08;即3x3的大格&#xff09;数字均含1-9&a…

pytorch resnet50_PyTorch终于能用上谷歌云TPU,推理性能提升4倍,我们该如何薅羊毛?...

晓查 发自 凹非寺量子位 报道 | 公众号 QbitAIFacebook在PyTorch开发者大会上正式推出了PyTorch 1.3&#xff0c;并宣布了对谷歌云TPU的全面支持&#xff0c;而且还可以在Colab中调用云TPU。之前机器学习开发者虽然也能在Colab中使用PyTorch&#xff0c;但是支持云TPU还是第一次…

Android Studio主题设置、颜色背景配置

2019独角兽企业重金招聘Python工程师标准>>> color-themes 效果展示 打开http://color-themes.com/有很多样式可供选择 1. Monokai Sublime Text 3(color theme) 2. Solarized Light (color theme) 3. Visual Studio 2015 Dark(color theme) 导入方式 下载主…

Java多线程实现异步调用

在Java平台,实现异步调用的角色有如下三个角色&#xff1a;调用者、 提货单 、真实数据&#xff0c;一个调用者在调用耗时操作,不能立即返回数据时,先返回一个提货单 .然后在过一断时间后凭提货单来获取真正的数据.去蛋糕店买蛋糕&#xff0c;不需要等蛋糕做出来(假设现做要很长…