python基础---集合类型(18)

1、作用

作用:集合、list、tuple、dict一样都可以存放多个值。但是集合主要用于:去重、关系运算

1.1关系运算

friends1 = ['zhou', 'sun', 'li', 'hou', 'jia']
friends2 = ['lu', 'sun', 'li', 'yu', 'huo']
l = []
for x in friends1:
    if x in friends2:
        l.append(x)
print(l)

2、定义

定义: 在{}内用逗号分隔开多个元素,多个元素满足一下三个条件

  • 集合内元素必须为不可变类型
  • 集合内元素无序
  • 集合内元素没有重复
s = {1, 2}  # s = set({1,2})

s = {1, [1, 2]}  # 集合内元素必须为不可变类型 [1, 2]为可变类型 报错
s = {1, 'a', 'd', 'x', 'q', 5, 2}  # 集合内元素无序  {1, 2, 'x', 'a', 5, 'd', 'q'}
s = {1, 1, 1, 1, 34, 'a', 'b'}  # 集合内元素没有重复  {1, 34, 'a', 'b'}

了解

s = {}  # 默认是空字典
print(type(s))

定义空集合

s = set()
print(s, type(s))

3、类型转换

# set({1, 2, 3})
res = set('hellollll')
print(res)  # {'o', 'h', 'l', 'e'}
print(set({'k1': 1, 'k2': 2}))  # {'k2', 'k1'}

4、内置方法

4.1 取交集:两者相同的元素

方法一:

friends1 = {'zhou', 'sun', 'li', 'hou', 'jia'}
friends2 = {'lu', 'sun', 'li', 'yu', 'huo'}
res = friends1 & friends2
print(res)

方法二:

friends1 = {'zhou', 'sun', 'li', 'hou', 'jia'}
friends2 = {'lu', 'sun', 'li', 'yu', 'huo'}
print(friends1.intersection(friends2))

:方法一和方法二相同,方法一是方法二的符号表示

4.2 取并集:两者所有的元素

friends1 = {'zhou', 'sun', 'li', 'hou', 'jia'}
friends2 = {'lu', 'sun', 'li', 'yu', 'huo'}
print(friends1 | friends2)
print(friends1.union(friends2))

4.3取差集:取两个集合中某个集合独有的元素

friends1 = {'zhou', 'sun', 'li', 'hou', 'jia'}
friends2 = {'lu', 'sun', 'li', 'yu', 'huo'}
# 取friends1独有的好友
print(friends1 - friends2)
print(friends1.difference(friends2))
# 取friends2独有的好友
print(friends2 - friends1)
print(friends2.difference(friends1))

4.4 对称差集:求两个集合独有的元素(即去掉共同元素)

friends1 = {'zhou', 'sun', 'li', 'hou', 'jia'}
friends2 = {'lu', 'sun', 'li', 'yu', 'huo'}
print(friends1 ^ friends2)
print(friends1.symmetric_difference(friends2))

4.5 父子集:包含关系

4.5.1 不存在包含关系

s1 = {1, 2, 3}
s2 = {1, 2, 4}
# 不存在包含关系
print(s1 > s2)
print(s1 < s2)

4.5.2 存在包含关系

s1 = {1, 2, 3}
s2 = {1, 2}
print(s1 > s2) # 当s1大于或等于s2时,才能说是s1包含s2
print(s1.issuperset(s2))  # s1>s2  True
print(s2.issubset(s1))  # s2<s1  True

s1 = {1, 2}
s2 = {1, 2}
print(s1 == s2)  #互为父子集
print(s1.issuperset(s2))  # True
print(s2.issuperset(s1))  # True

5、去重

5.1 只能针对不可变类型去重

print(set([1, 1, 1, 2, 3, 4]))

5.2 无法保证原来的顺序

l = [1, 'a', 'z', 'b', 1, 2, 4, 2]
s = set(l)
print(s)
l = list(s)
print(l)

5.3 保证原来顺序不变,去除重复信息


l = [
    {'name': 'zhoushun', 'age': 18, 'sex': 'male'},
    {'name': 'tom', 'age': 17, 'sex': 'male'},
    {'name': 'jack', 'age': 20, 'sex': 'male'},
    {'name': 'xiaohong', 'age': 24, 'sex': 'female'},
    {'name': 'zhoushun', 'age': 18, 'sex': 'male'},
]
# 保证原来顺序不变,去除重复信息
new_l = []
for dic in l:
    if dic not in new_l:
        new_l.append(dic)
print(new_l)
for d in new_l:
    print(d)

6、其他内置方法

6.1 discard()

删除不存在的元素 不报错

s = {1, 2, 3}
s.discard(3)
s.discard(4)  # 删除不存在的元素 不报错
print(s)  # {1, 2}

6.2 remove()

删除元素不存在则报错

s = {1, 2, 3}
s.remove(4)  # 删除元素不存在则报错

6.3 update()

更新并去重

s = {1, 2, 3}
s.update({1, 2, 4, 5, 10, 7})
print(s)  # {1, 2, 3, 4, 5, 7, 10} 更新并去重

6.4 pop()

s = {1, 2, 3}
res = s.pop()
print(res)  # 1

6.5 add()

s = {1, 2, 3}
s.add(4)
print(s)  # {1, 2, 3, 4}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值