python——集合(set)

集合(set)– 字典的近亲

集合的两大功能:

  • 集合可以实现去重的功能
  • 集合可以进行关系检测:交集、并集、差集、超集

集合的定义:

1. 集合里的元素不可以重复:

   若定义的时候有重复,会自动去重:

2. 定义一个空集合:

3. 利用集合的特性实现对列表去重:

集合的特性:

  • 集合是无序、不重复的数据结构,用此不支持索引、切片、重复、连接
  • 支持成员操作符
  • 支持for循环

1. 成员操作符:

 

2.  for循环:

(1)示例1

(2)示例2

集合的用法:

1. 增加元素:

     (1)增加一个元素到集合中:

    (2) 同时增加多个元素到集合中:

2. 删除元素:

      (1) pop的方式(随机删除):

     (2)remove的方式(这种方式可以删除指定集合元素,若元素不存在则报错):

      (3) discard( ) 删除集合指定元素(如果不存在,则do nothing)

remove删除的元素不存在,会报错:

   (4) 清空集合内容:

3. 集合:

     (1)并集:

     (2) 交集:

     (3)差集

     (4)对等差分:并集-交集

     (5) 判断:s3是否为s4的超集:

     (6) 判断:s3 是否为 s4的子集

      (7)判断:集合s3 和 s4 是否不相交:

集合练习题1:

import random

s1 = set([])
for i in range(int(input('输入样本数:'))):
    s1.add(random.randint(1, 1001))
s2 = sorted(s1)  ### 排序后变成了列表类型。
print(s1, '\n', type(s1), '\n', s2, '\n', type(s2))

集合练习题2:

import random                                
# 产生两组范围在[10,20]的随机数,每组10个数:                 
li1 = list()                                 
li2 = list()                                 
for i in range(10):                          
    li1.append(random.randint(10,20))        
# print(li1)                                 
for j in range(10):                          
    li2.append(random.randint(10,20))        
# print(li2)                                 
#1.20个数中,一共有多少个不同的数字?   求并集                  
set1 = set(li1)                              
set2 = set(li2)                              
s1 = set1 | set2                             
print(len(s1))                               
print(s1)                                    
# 2. 2组数中,不重复得有几个?分别是什么?   求对等差分             
s2 = set1 ^ set2                             
print(len(s2))                               
print(s2)                                    
# 3. 2组数中,重复的有几个?分别是什么?   求交集                
s3 = set1 & set2                             
print(len(s3))                               
print(s3)                                    

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值