集合内置方法

集合:

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

 定义:

在{}内用逗号分隔开多个元素,集合具备一下三个特点:

  1、每个元素必须是不可变类型

  2、集合内没有重复的元素

  3、集合内元素无序

    s = {1,2,3,4}    >>>本质就是 s = set({1,2,3,4})

注意1:列表类型时索引对应值,字典是key对应值,均可以取得单个指定的值,而集合类型

既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重

与关系元素,根本没有取出单个指定值这种需求。

注意2:{}既可以用于定义dict,也可以用于定义集合,但是字典内的元素必须是key:value的

格式,现在我们想定义一个空字典和空集合,怎么去准确定义两者?

d = {}  >>默认是空字典

s = set() >>这是空集合

类型转换:

能够支持for循环的数据类型都可以转换成集合(元素得是不可变类型)

去重:

s1 = {1,2,3,4,5,6,7,1,1,2,3,8,9}

s1 = set()

print(s1)     >>> {1, 2, 3, 4, 5, 6, 7, 8, 9}

name_list = ['kevin', 'jason', 'jason', 'jason', 'kevin', 'kevin']

先将列表转换成集合

s1 = set(name_list)

再将去重之后的集合转换成列表

l1 = list(s1)

print(l1)

集合去重复有局限性

1. 只能针对不可变类型
2. 集合本身是无序的,去重之后无法保留原来的顺序
>>> l=['a','b',1,'a','a']
>>> s=set(l)
>>> s # 将列表转成了集合
{'b', 'a', 1}
>>> l_new=list(s) # 再将集合转回列表
>>> l_new
['b', 'a', 1] # 去除了重复,但是打乱了顺序

# 针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
l=[
    {'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_l=[]  >>>新建一个空列表,去重后把老列表的元素添加到新列表里。

for dic in l:
    if dic not in new_l:
        new_l.append(dic)   

print(new_l)    
# 结果:既去除了重复,又保证了顺序,而且是针对不可变类型的去重
[
    {'age': 18, 'sex': 'male', 'name': 'lili'}, 
    {'age': 73, 'sex': 'male', 'name': 'jack'}, 
    {'age': 20, 'sex': 'female', 'name': 'tom'}
]
 

集合关系运算

 friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们 
 friends2 = {"Jy","ricky","jason","egon"}   # 用户2的好友们
# 1.合集/并集(|):求两个用户所有的好友(重复好友只留一个)
>>> friends1 | friends2
{'kevin', 'ricky', 'zero', 'jason', 'Jy', 'egon'}

# 2.交集(&):求两个用户的共同好友
>>> friends1 & friends2
{'jason', 'egon'}

# 3.差集(-):
>>> friends1 - friends2 # 求用户1独有的好友
{'kevin', 'zero'}
>>> friends2 - friends1 # 求用户2独有的好友
{'ricky', 'Jy'}

# 4.对称差集(^) # 求两个用户独有的好友们(即去掉共有的好友)
>>> friends1 ^ friends2
{'kevin', 'zero', 'ricky', 'Jy'}

# 5.值是否相等(==)
>>> friends1 == friends2
False

# 6.父集:一个集合是否包含另外一个集合
# 6.1 包含则返回True
>>> {1,2,3} > {1,2}
True
>>> {1,2,3} >= {1,2}
True
# 6.2 不存在包含关系,则返回False
>>> {1,2,3} > {1,3,4,5}
False
>>> {1,2,3} >= {1,3,4,5}
False


# 7.子集
>>> {1,2} < {1,2,3}  
True
>>> {1,2} <= {1,2,3}
True

 

おすすめ

転載: blog.csdn.net/qq_64089078/article/details/121251658