08_Python集合

一、集合的定义
集合(set)里面的元素是不可重复的
空集:
注意:空集不是s={},这是个空字典
在这里插入图片描述
二、集合的特性
集合只支持 成员操作符,迭代(for循环),枚举
1、成员操作符
在这里插入图片描述
2、for循环

#迭代(for循环)
s1={1,2,3,}
for i in s1:
    print(i,end="|")

3、枚举

##枚举
for i,v in enumerate(s1):
    print("index:%s,value:%s"%(i,v))

在这里插入图片描述
三、集合的常用方法
在这里插入图片描述
1、增加

2、删除

allow_users = {'user1', 'user2', 'user3', 'user1'}

# *******************************增加***************************
# # 添加一个元素到集合里面;
# allow_users.add('user4')
# print(allow_users)

# # update添加多个元素到集合中;
# allow_users.update({'user4', 'user5', 'user6'})
# print(allow_users)


# ****************************删除********************************
# # remove删除指定的元素, 如果元素不存在, 则报错
# allow_users.remove('user1')
# print(allow_users)
#
# # remove删除指定的元素,  如果元素不存在, 则什么也不做
# allow_users.discard('user1')
# print(allow_users)

# # pop随机删除集合元素
# delete_user = allow_users.pop()
# print(allow_users)
# print("随机删除的元素:", delete_user)

# # clear: 清空集合元素
# allow_users.clear()
# print(allow_users)

在这里插入图片描述

3、交集,并集,差集

set1 = {1, 2, 3}
set2 = {1, 2, 4}

print("交集".center(50, '*'))
print("集合1和集合2的交集:", set1.intersection(set2))
print(set1.intersection_update(set2))
print(set1)
# 求集合1和集合2的交集, 并更新集合1为交集的内容
set2.intersection_update(set1)
print(set2)
print("集合1和集合2的交集:", set1 & set2)


print("并集".center(50, '*'))
print(set1.union(set2))
print(set1 | set2)


# 自己 - 交集
print("差集".center(50, '*'))
print(set1.difference(set2))
print(set2.difference(set1))
print(set1 - set2)
print(set2 - set1)

# 对等差分 = 交集 - 并集
print("对等差分".center(50, '*'))
print(set1.symmetric_difference(set2))
print(set2.symmetric_difference(set1))
print(set1 ^ set2)

在这里插入图片描述
在这里插入图片描述
四、示例
1、列表去重
在抓取页面图片时,为避免重复抓取,将抓取的img结果(结果集是list类型的)通过集合去重
方法一: 依次遍历并判断

# 方法一: 依次遍历并判断


ids = [1,2,2,3,3,4,2,4,5,5,6,1]
news_ids = []
for id in ids:
    if id not in news_ids:
        news_ids.append(id)
print(news_ids)

方法二: 通过set方法进行处理

##方法二: 通过set方法进行处理
ids =list(set(ids))
print(ids)

方法三: 通过字典的方式去重:, 因为字典的key值是不能重复的.

li = [1, 2, 3, 4, 65, 1, 2, 3]
print({}.fromkeys(li).keys())

在这里插入图片描述
2、明明的随机数
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从大到小排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

import random
b=[]
N=int(input('input a number:'))
for i in range(N):
    a=random.randint(1,1000)
    b.append(a)
print(sorted(set(b)))

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值