Python基本数据结构之集合

Posted wyh-study

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基本数据结构之集合相关的知识,希望对你有一定的参考价值。

一道python面试的一个小问题,说怎么使用一行代码将一个列表里的重复元素,其实这里只要将列表转换成集合就可以了。

定义

集合跟我们学的列表有点像,也是可以存一堆数据,不过它有几个独特的特点,令其在整个Python语言中占有一席之地,

 

    1. 里面的元素不可变,代表你不能存一个list、dict 在集合里,字符串、数字、元组等不可变类型可以存

 

    1. 天生去重,在集合里没办法存重复的元素

 

    1. 无序,不像列表一样通过索引来标记在列表中的位置 ,元素是无序的,集合中的元素没有先后之分,如集合3,4,5和3,5,4算作同一个集合

 

基于上面的特性,我们可以用集合来干2件事,去重和关系运算

1 li=[1,1,li]
2 a=set(li)  # 可变集合/‘
3 print(a)
4 b=set(xiaohu 123)
5 print(b)  # set是无序不重复的 # 如果要取值 1、for循环 2、迭代器

集合对象是一组无序排列的可哈希的值:集合成员可以做字典的键
集合当中的交(
1、 & 2、集合中的方法intersection()并(1、 | 2、 集合中的方法union()补(1、- 2、集合中的方法difference()差(集合中的方法symmetric_difference()
 1 pythons=[alex,egon,yuanhao,wupeiqi,gangdan,biubiu]
 2 linuxs=[wupeiqi,oldboy,gangdan]
 3 
 4 # 求既报名python,也报名linux的学生 ,这是用for循环实现两个集合的交集-----------------------------------------------------
 5 l=[]
 6 for item in pythons:
 7     if item in linuxs:
 8        l.append(item)
 9 print(l)
10 
11 # 求报名了python,没有报名linux的学生-----------------------------------------------------------------------------------
12 l=[]
13 for item in pythons:
14     if item not in linuxs:
15         l.append(item)
16 print(l)
17 
18 # 求所有报名的孩子的集合 1、 |   2、 集合中的方法union()----------------------------------------------------------------
19 a=set(pythons)
20 b=set(linuxs)
21 s=a | b #  求两个集合的并集
22 print(s)
23 print(a.union(b)) # 和 | 效果一样,求两个集合的并集
24 
25 #  求两个集合的交集 1、 &  2、集合中的方法intersection()----------------------------------------------------------------
26 a=set(pythons)
27 b=set(linuxs)
28 s= a & b
29 print(s)
30 print(a.intersection(b))
31 
32 # 求补集----------------------------------------------------------------------------------------------------------------
33 a=set(pythons)
34 b=set(linuxs)
35 print(a-b) # ‘biubiu‘, ‘yuanhao‘, ‘egon‘, ‘alex‘
36 print(a.difference(b)) # ‘biubiu‘, ‘yuanhao‘, ‘egon‘, ‘alex‘
37 print(b-a) # ‘oldboy‘
38 print(b.difference(a)) # ‘oldboy‘
39 
40 # 求没有同时报名python和linuxs的学生------------------------------------------------------------------------------------
41 a=set(pythons)
42 b=set(linuxs)
43 print(a^b)
44 print(a.symmetric_difference(b)) # ‘yuanhao‘, ‘alex‘, ‘oldboy‘, ‘biubiu‘, ‘egon‘
45 print(b.symmetric_difference(a)) # ‘oldboy‘, ‘biubiu‘, ‘yuanhao‘, ‘egon‘, ‘alex‘

 集合中  >,>=,<,<= 父集,子集 (返回布尔值)

 

 1 set1=1,2,3,4,5
 2 set2=1,2,3,4
 3 
 4 print(set1 >= set2)
 5 
 6 print(set1.issuperset(set2)) # 完全包含的意思
 7 
 8 print(set2 <= set1)
 9 
10 print(set2.issubset(set1)) # 子集

 

 

集合里的增与删

1、add()方法

1 set1.add(88)  # 88是一个整体
2 print(set1)
3 print(set1.pop())
4 print(set1)

  2、discard(),remove()方法

1 set1.discard(3) # 指定值删除
2 print(set1)
3 set1.remove(2) # 也是指定值删除
4 print(set1)
3、update()方法
1 set1.update(ops)  # 与add的区别是添加几个不重复的
2 set1.update([123,ooo])
3 print(set1)
4、clear()方法

1 set1.update(ops)  # 与add的区别是添加几个不重复的
2 set1.update([123,ooo])
3 print(set1)
在集合中添加元素用.add()方法,.pop方法不指定参数,随机删除,并且有返回值
单纯的删除:discard,remove 指定元素删除,元素不存在不报错,单纯的删除,没有返回值
update方法谁调用更新谁的集合
print(set(‘alex‘)==set(‘alexexex‘)) # 返回True
print(set(‘alex‘)<set(‘alexwwww‘))  #  返回True 因为右边包含左边

  

 

 

 

 

以上是关于Python基本数据结构之集合的主要内容,如果未能解决你的问题,请参考以下文章

python入门到放弃-基本数据类型之set集合

python入门之python开发笔记基本数据类型集合

Python 基础之集合及基本数据类型总结

[Python系列-5]:Python之人工智能 - 基本语法-2- 类复合数据类型容器(列表集合元组字典)

4.93Python数据类型之集合

12 Python基本数据类型---集合