python中set集合详解

Posted ghostant

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中set集合详解相关的知识,希望对你有一定的参考价值。

定义

定义:在{}中用逗号隔开,集合具备以下3个特点:

1.每个元素必须是不可变类型

2.集合内没有重复元素

3.集合内元素无序

my_set = {1, 2, 3, 4}
# 本质上
my_set = set({1, 2, 3, 4})

# 注意1:列表是索引对应值,字典是key对应值,均可以取得单个值.
# 而集合类型既没有索引也没有key值相对应,所以无法取得单个的值.对集合来说
# 主要功能在于去重与关系元素,没有取出单个值的需求
# 注意2:{}既被用于定义字典也被用于定义集合.但是字典内的元素必须以key:value的形式.
# 如何准确的定义一个空集合?
my_set = {}
print(type(my_set))
my_set = set()
print(type(my_set))
>>>

<class ‘dict‘>
<class ‘set‘>

类型转换

但凡能被for循环遍历输出的值(输出的值不能为可变数据类型)

my_set = set([1, 2, 3, 4, 5])   >>>{1, 2, 3, 4, 5}
my_set = set(string)          >>>{‘t‘, ‘s‘, ‘g‘, ‘i‘, ‘r‘, ‘n‘}
my_set = set((1, 2, 3, 4, 1))   >>>{1, 2, 3, 4}
my_set = set({name:yyh})    >>>{‘name‘}

关系运算

friends1 = {Albert, Tony, John, Egon, Sean}
friends2 = {Sean, Sor, Egon}
print(friends1 | friends2)  # 求合集
print(friends1 & friends2)  # 求交集
print(friends1 - friends2)  # 求差集 friends1中独有的
print(friends2 - friends1)  # 求差集 friends2中独有的
print(friends1 ^ friends2)  # 对称差集(去掉共有的好友后的合集)
print(friends1 == friends2)  # 集合是否相等

print({1, 2, 3} >= {1, 2, 3})  # 包含关系
print({1, 2, 3} > {1, 2})  # 真包含关系
print({1, 2} < {1, 2, 3})  # 真子集
print({1, 2, 3} <= {1, 2, 3})  # 子集

去重

# 集合去重复有局限性,仅适用于不可变数据类型
# 集合本身是无序的, 去重之后无法保留原来的顺序
my_list = [a, b, 1, a, b]
my_set = set(my_list)   # 列表转集合
print(my_set)
my_list = list(my_set)  # 集合转列表
print(my_list)          # 去除了重复,但是打乱了顺序
# 针对可变类型,并且保证顺序则需要自己写代码实现
my_list = [
    {name: lili, age: 18, sex: male},
    {name: jack, age: 73, sex: male},
    {name: tom, age: 20, sex: female},
    {name: lili, age: 18, sex: male},
    {name: lili, age: 18, sex: male},
]
new_list = []
for i in my_list:
    if i not in new_list:
        new_list.append(i)

print(new_list)

 练习

pythons = {jason, egon, kevin, ricky, gangdan, biubiu}
linuxs = {kermit, tony, gangdan}

print(f即报名了python又报名了linux的学员有{pythons & linuxs})
print(f所有报名的学员{pythons | linuxs})
print(f只报名了python的学员{pythons - linuxs})
print(f只报名了其中一门的学员{pythons ^ linuxs})

 

以上是关于python中set集合详解的主要内容,如果未能解决你的问题,请参考以下文章

Python 集合set()添加删除交集并集集合操作详解

python中set集合详解

Python set集合详解

Python 集合set()添加删除交集并集集合操作详解

Python的set集合详解

python3集合操作方法详解 python3集合操作大全