资讯专栏INFORMATION COLUMN

Python基础知识之集合

libxd / 1657人阅读

摘要:和一样可以将元素从集合中删除,区别是如果元素不存在则不会报错。从集合中随机删除一个元素,并且返回该元素,如果集合为空则会报错用于清空集合。

集合的描述

集合是无序的、不重复的数据集合,它本身是可变的,但里面的元素是不可变类型(这里要注意,即使是含有列表的元组也不可以,必须是完全不可变类型)

创建集合

创建集合可以使用大括号{}来创建,元素间用逗号分隔,但是不能用它来创建空集合,因为{}创建的是空字典。

如 set1 = {1,2,3}

也可以使用set()函数来创建集合,其中的参数为可迭代对象即可(比如字符串、列表、元组、迭代器等),前提是元素中必须是不可变类型。

i = "abcdefg"
a =set(i)
print(type(a))
print(a)
----------

{"b", "a", "f", "d", "g", "e", "c"}
增 add update

add(elem)
可以向集合中添加新元素,如果该元素已存在则不做任何改变

s1 = {1,2,3}
s1.add("qwe")
print(s1)
----------
{1, 2, 3, "qwe"}

update(*others)
可将其他可迭代对象(比如字符串、列表、元组)添加到集合中,自动删除重复元素

s1 = {1,2,3}
it = [3,4,5]
s1.update(it)
print(s1)
----------
{1, 2, 3, 4, 5}
删 remove(elem) discard(elem) pop() clear()

remove(elem)
将元素从集合中删除,如果该元素不存在则会报错。

s1 = {1,2,3}
s1.remove(2)
print(s1)
----------
{1, 3}

discard(elem)
和remove一样可以将元素从集合中删除,区别是如果元素不存在则不会报错。

s1 = {1,2,3}
s1.discard(6)
print(s1)
----------
{1, 2, 3}

pop()
从集合中随机删除一个元素,并且返回该元素,如果集合为空则会报错

s1 = {1,2,3}
a = s1.pop()
print(s1)
print(a)
----------
{2, 3}
1

clear()
用于清空集合。

几种运算方法

对于集合来讲有几种运算方法:交集、并集、差集、反交集、子集、超集
下面用代码来详细说明每种方法的用法

s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
print("交集:",s1 & s2) #可用&或者intersection,输出一个新的集合,包含共同拥有的元素
print("交集:",s1.intersection(s2))
print("并集:",s1 | s2) #可用|或者union,输出一个新的集合,包含两个集合中所有的元素(去重)
print("并集:",s1.union(s2))
print("差集:",s1 - s2) #可用 - 或者difference,输出一个新的集合,包含前一个集合中除去共有的元素
print("差集:",s1.difference(s2))
print("反交集:",s1 ^ s2) #可用^或者 symmetric_difference,输出一个新的集合,包含两个集合中除去共有的元素后剩余的所有元素
print("反交集:",s1.symmetric_difference(s2))
    交集: {3, 4, 5}
    交集: {3, 4, 5}
    并集: {1, 2, 3, 4, 5, 6, 7}
    并集: {1, 2, 3, 4, 5, 6, 7}
    差集: {1, 2}
    差集: {1, 2}
    反交集: {1, 2, 6, 7}
    反交集: {1, 2, 6, 7}
    

子集与超集,简单来讲就是一个集合中的元素包含另一个集合中所有的元素,则“大的”集合叫超集,“小的”叫子集

s1 = {1,2,3}
s2 = {1,2,3,4,5}
print(s1.issubset(s2)) #输出为True,s1是s2的子集
print(s2.issuperset(s1))#输出为True,s2是s1的超集
----------
    True
    True

另外,使用frozenset("集合名"),可以把集合变成不可变集合

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42555.html

相关文章

  • Python基础(四)集合

    摘要:并且集合中的元素也是随机排序的。除了用来创建集合,还可以使用的方式,但是这种方式不提倡使用,因为在某些情况下,搞不清楚是字典还是集合。集合不是序列类型,不能用索引方式对其进行修改和实现集合和列表两种对象之间的转化。 集合Set类似字典的特点,可以用{}花括号来定义;其中的元素是没有序列,也就是非序列类型的数据;而且集合中的元素不可重复,这就类似于dict键。 创建集合 >>> s1 =...

    CKJOKER 评论0 收藏0
  • 1024程序员节最新福利2018最全大数据资料集合

    摘要:前言有好久没有写博客了主要这段时间都沉迷学习无法自拔了哈哈自吹一波前两天不是节吗所以就有很多福利出现了当然每个人能都获得的信息都有所不同这就是所谓的信息差秉着好东西需要分享和开源的好习惯所以来给你们送福利了其他福利一程序员节最新福利之最全资 前言 有好久没有写博客了,主要这段时间都沉迷学习无法自拔了,哈哈.自吹一波. 前两天不是1024节吗,所以就有很多福利出现了,当然每个人能都获得的...

    RancherLabs 评论0 收藏0
  • Python基础接口——从协议到抽象基类

    摘要:本文重点协议是中非正式的接口了解抽象基类的基本概念以及标准库中的抽象基类掌握抽象基类的使用方法。三抽象基类的使用通过继承声明抽象基类声明抽象基类最简单的方式是继承或其他抽象基类注意在之间,继承抽象基类的语法是。 导语:本文章记录了本人在学习Python基础之面向对象篇的重点知识及个人心得,打算入门Python的朋友们可以来一起学习并交流。 本文重点: 1、协议是Python中非正式的接...

    TwIStOy 评论0 收藏0
  • 「码个蛋」2017年200篇精选干货集合

    摘要:让你收获满满码个蛋从年月日推送第篇文章一年过去了已累积推文近篇文章,本文为年度精选,共计篇,按照类别整理便于读者主题阅读。本篇文章是今年的最后一篇技术文章,为了让大家在家也能好好学习,特此花了几个小时整理了这些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 让你收获满满! 码个蛋从2017年02月20...

    wangtdgoodluck 评论0 收藏0
  • Python基础到入门】Python基础语法篇——基本数据类型【文末送书】

    摘要:布尔值布尔值和布尔代数的表示完全一致,一个布尔值只有两种值的数据类型可以通过内置的函数查询,例如还可以用来判断和的区别在于不会认为子类是一种父类类型。会认为子类是一种父类类型。基本功能是进行成员关系测试和删除重复元素。 ...

    Winer 评论0 收藏0

发表评论

0条评论

libxd

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<