码迷,mamicode.com
首页 > 编程语言 > 详细

python中set集合详解

时间:2019-11-04 21:31:08      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:去重   for循环   循环   数据   输出   friends   ack   for   ber   

定义

定义:在{}中用逗号隔开,集合具备以下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集合详解

标签:去重   for循环   循环   数据   输出   friends   ack   for   ber   

原文地址:https://www.cnblogs.com/Ghostant/p/11794561.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!