您现在的位置是:首页 > 网络趣梗网络趣梗
set集合的方法(定义set集合)
2022-08-29 20:04:37网络趣梗0人已围观
简介 set集合的方法(定义set集合),新营销网红网本栏目通过数据整理汇集了set集合的方法(定义set集合)相关信息,下面一起看看
set集合的方法(定义set集合),新营销网红网本栏目通过数据整理汇集了set集合的方法(定义set集合)相关信息,下面一起看看。
Set是Python定义的一个非常重要的组合对象。作为元素的一组对象可以集合在一个对象中,元素之间没有特殊的关系。
使用一对花括号作为分隔符。这些元素用逗号分隔。同一个中的每个元素都是唯一的。元素之间不允许重复。
Python有两种类型的表示:set和frozenset(冻结)。两者的区别在于set是可变类型,而frozenset是不可变类型。
概念的概念来源于数学。数学是元素的集合,它最重要的性质是回答一个元素E是否属于S,即判断E是否是S的元素,在相关的讨论中,元素作为一个未定义的概念,除了元素判断之外还有一组重要的运算,包括两者之间的子集判断、两者的并、交、差集运算等。这些操作都可以基于的元素关系来定义。
程序经常需要带有属性的对象,Python为它们提供了类型。我们可以将一批任意元素放在一起,形成一个set或frozenset类型的对象。这里主要讨论Set。事实上,所有与元素变化无关的东西都适用于frozenset。
Python对的元素也有要求,它们只能是不可变的对象(hasheable),并且必须能够进行相等比较(使用==运算符)。内置的数字、字符串、bool对象、元组都符合这些要求(不包括列表、字典和其他可变类型的数据)。
Python提供了一个内置函数hash()来计算对象的哈希值。任何不能计算哈希值的对象(调用内置函数hash()抛出异常)都不能作为元素使用(当然也不能作为dictionary对象的“key”)。
由于基本概念来源于数学,Python还支持元素判断和各种重要运算,包括并、交、差等等。此外,集合类型还支持许多改变操作,包括添加或删除元素,以及由一些扩展赋值运算符描述的改变操作。
和数学类似,Python中的元素是唯一的,没有重复的元素,元素之间没有顺序关系。
Set是仅由key支持的dict:类似于dict:set是一组键,但不存储值。因为键不能重复,所以集合中没有重复的键。同样,等价于list,set类似于dict,其搜索速度极快,还可以支持的并、交、差运算。
2构造Python是用{expression,…}这样的表达式来描述的。作为这些表达式的计算结果而获得的元素。在创建时,解释器会自动删除重复的元素。
值得注意的是,的这种描述形式类似于字典,两者的区别在于构成要素的不同。的每个元素是一个通用表达式,而字典的每个元素描述一对用冒号分隔的表达式。
2.1直接使用定义来构造集合
2.2使用set()变换,变换后的对象可以是任意序列或迭代对象。
由于花括号形式总是生成一个集合(或字典),要生成不可变的frozenset的对象,只能使用frozenset(……)的形式,例如:
2.3由描述性公式生成
3 set等类型转换tuple set: tuple元素要求用==比较,只保留一个重复元素,顺序丢失;
Set tuple:没有限制;
List set:要求List元素满足set的要求,只保留一个重复元素,因此顺序丢失;
集合列表:没有限制;
Str set:元素是单个字符,只保留一个重复字符,因此顺序丢失;
Dict set:元素是字典中的关键字;
4的比较主要是比较包含关系(一个的元素是否属于另一个),即子集和超集的关系。
如果一个元素的所有元素都属于另一个元素,则前者是后者的子集,或者后者是前者的超集。显然,一个总是自身的子集,也是自身的超集。如果一个是另一个的子集,并且两者不相等,那么前者是真子集,同样,后者是真超集。
也就是说,子集和超集的关系是包含或相等的;然而,真子集和真超集是包含的和不相等的。
S1=s2返回真S1。is subset (s2)当且仅当s1是s2的子集,同上s1 s2返回Trues1=s2当且仅当s1是s2的真子集,Trues1.issupset(s2)当且仅当s2是s1的超集。与s1 s2相同。当且仅当s2是s1的真超集,返回Trues1.isdisjoint(s2)判断两者是否不相交,即是否有公共元素5运算Python提供了一组数学运算对应的运算。
S1。联盟(S2,)和运算生成一个新的S1
S2
.同上S1。十字路口(S2,)交集运算生成新的S1 S2.同上S1。差异(S2、)差分运算生成一个新的S1-S2-.同上S1。对称_差分(S2) (S1-S2)
6修改和更新s1.update(s2,…)修改s1以包括其他元素s1
=s2
…同上s1.intersection_update(s2,…)修改s1以包括所有公共元素s1=s2 …同上s1.difference_update(
s2,…)修改s1,从中去除属于其他 的元素s1 -= s2 - …同上s1.symmetric_difference_update(s2)修改s1,使之包含仅属于s1或s2之一但不同时属于两者的元素s.add(x)将元素x加入 ss.remove()从s里删除元素x,在s没有x时报错s.discard(x)如果s里有x就抛弃它,没有x时什么也不做s.pop()从s里删除某个(任意)元素并返回它,具体元素由 内部确定。如果操作时s为空则报错s.clear()清除s里的所有元素
附原码:
x = 2
s1 = {x,x+5,x**10} # 直接使用定义构造set
s2 = { Chinese , Math , English , Physics , Chemisty , biology , Math }
print(s1, \n ,s2)
{1024, 2, 7}
{ Chemisty , Math , Physics , Chinese , biology , English }
# set基于 == 判断元素是否重复,如果重复,后面的舍弃掉
print({1,1.0})
print({1.0,1})
print({1,True})
print({False,0})
print({1,1.0,True,0,False})
{1}
{1.0}
{1}
{False}
{0, 1}
lis = [1,1,2,3,5,8,13]
tup = (1,7,13,19,23,29)
print(set(lis)) # 使用set()转换list构造set
print(set(tup)) # 使用set()转换tuple构造set
print(frozenset(lis)) # 使用frozenset转换list构造frozenset
{1, 2, 3, 5, 8, 13}
{1, 7, 13, 19, 23, 29}
frozenset({1, 2, 3, 5, 8, 13})
# 用描述式生成
s3 = {x*y for x in range(10) for y in range(10) if x*3 y**2}
相当于以下代码:
s3 = set()
for x in range(10):
for y in range(10):
if x*3 y**2:
s3.add(x*y)
fs = frozenset(n ** 2 for n in range(-10, 20))
print(s3, \n ,fs)
{0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25,
27, 28, 30, 32, 35, 36, 40, 42, 45, 48, 49, 54, 56, 63, 64, 72, 81}
frozenset({64, 1, 0, 121, 100, 36, 4, 196, 225, 9, 169, 256, 324,
361, 289, 16, 81, 49, 144, 25}
a = set( abracadabra ) # unique letters in a
b = set( alacazam ) # unique letters in b
print(a)
set
火树银花什么意思(成语中的化学常识)
摇一摇传图(「摇一摇」,你们还在玩吗?)
海清演过的电视剧(海清这部仅12集的新剧,已经露出了“爆款”的潜质)
年末净资产(发生超过上年末净资产百分之十重大损失)
打印机安装步骤(新手小白如何安装打印机)
nba名人堂(霍华德谈NBA名人堂)
交通银行信用卡进度(信用卡审核进度查询通道大全)
蝰蛇多少钱(8.4L排量道奇蝰蛇)
怎么开罐子(罐子的盖子难以打开?)
碑文怎么写(碑文应该怎么写?)
爱情偶像剧(宅家必看八部高甜偶像剧)
疯狂的武神(《雷神4》有多疯狂?)
更多set集合的方法(定义set集合)相关信息请关注本文章,本文仅仅做为展示!
Tags: 网络趣事
很赞哦! ()
相关文章
随机图文
留言与评论 (共有 条评论) |