10 集合的内置方法及数据结构总结

lickylin 2020-04-19

1.作用

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

2.定义

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

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

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

3.集合内元素无序

3.类型转换

但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型

>>> s = set([1,2,3,4])

>>> s1 = set((1,2,3,4))

>>> s2 = set({‘name‘:‘jason‘,})

>>> s3 = set(‘egon‘)

>>> s,s1,s2,s3

{1, 2, 3, 4} {1, 2, 3, 4} {‘name‘} {‘e‘, ‘o‘, ‘g‘, ‘n‘}

4.使用

4.1 关系运算

用以下两个集合friends1和friends2来分别存放两人的好友名,然后以此为例来介绍关系运算

>>> 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 不存在包含关系,则返回True

>>> {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

4.2去重

集合去重复有局限性 

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‘}

]

4.3其他操作

 1.长度

>>> s={‘a‘,‘b‘,‘c‘}

>>> len(s) 3

2.成员运算

>>> ‘c‘ in s True

3.循环

>>> for item in s:

...

print(item)

...

c

a

b

数据类型总结

10 集合的内置方法及数据结构总结

相关推荐