10.python常用数据类型—集合

集合(set)

集合与元组和列表相似都用于做容器,在内部可以放一些子元素,但集合有三特殊特点: 子元素不重复子元素必须可哈希无序.

提示:目前可哈希的数据类型 int/str/tuple;不可哈希的类型tuple/list/set 。

1 集合的定义

v1 = {1,2,99,18}
v2 = {"aa","cc","bb","Ee"}
v3 = {1,True,"world",(11,22,33)}

集合与字典虽然都是用{}括号,但字典内部是键值对,而集合内部直接是值。

2 常用方法

  1. 添加元素

    data = {"刘德", '张三', "王五"} 
    data.add("李四") 
    print(data)
    
    data = set() 
    data.add("aa") 
    data.add("bb") 
    print(data)
    
  2. 删除元素

    data = {"刘德", '张三', "王五"} 
    data.discard("王五")
    # 如果删除的元素不存在 不报错  
    print(data)
    
  3. 交集

    s1 = {"aa", "bb", "cc"} 
    s2 = {"aaa", "bb", "ccc"} 
    s3 = s1 & s2   # 方式一:取两个集合的交集 
    s4 = s1.intersection(s2)) # 方式二:取两个集合的交集
    print(s3,s4)
    
  4. 并集

    s1 = {"aa", "bb", "cc"} 
    s2 = {"aaa", "bb", "ccc"}} 
    s3 = s1 | s2               # 方式一:取两个集合的并集 
    s4 = s1.union(s2))         # 方式二:取两个集合的并集 
    print(s3,s4)
    
  5. 差集

    s1 = {"刘能", "赵四", "⽪⻓⼭"} 
    s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"} 
    s3 = s1 - s2                       # 方式一:差集,s1中有且s2中没有的值 
    s4 = s1.difference(s2)         # 方式二:差集,s1中有且s2中没有的值 
    print(s3,s4) 
    s5 = s2 - s1                     # 方式一:差集,s2中有且s1中没有的值 
    s6 = s2.difference(s1)           # 方式一:差集,s2中有且s1中没有的值 
    print(s5,s6)
    

3 转换

其他类型如果想要转换为集合类型,可以通过set进行转换,并且如果数据有重复自动剔除。

提示:int/list/tuple/dict都可以转换为集合。

v1 = [11,22,33,11,3,99,22]
v2 = set(v1)
print(v2) # {11,22,33,3,99}
v1 = "123"
v2 = set(v1)
print(v2) # {"1","2","3"}
v1 = (11,22,3,11)
v2 = set(v1)
print(v2) # {11,22,3}
v1 = {"age":12, "status":True,"name":"333"}
print( set(v1.keys()) )     
# 输出:{'status', 'name', 'age'}
print( set(v1.values()) )    
# 输出:{'status', 'name', 'age'}
print( set(v1.items()) )    
# 输出:{('age', 12), ('status', True), ('name', '333')}

4 其他

  1. 索引/切片/步长
    集合中没有提供 索引/切片/步长 这些功能,因为他无需,所以无法使用索引操作。

  2. 获取集合长度

    v = {"刘能", "赵四", "尼古拉斯")
    data = len(v)
    print(data)
    
  3. for循环

     v = {"刘能", "赵四", "尼古拉斯") 
     for item in v:     
     	print(item)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值