ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python之set集合,基础篇

2021-07-08 14:00:09  阅读:366  来源: 互联网

标签:set name python list print name2 name1 集合


集合:set
特点:
1>、无序 ,所有不可用下标值查询,也不可切片
2>、去重
3>、可添加,可删除,不可修改

1,定义一个空集合
name_set = set()

需要注意的是:

name_str = ""       --定义空字符串

name_list = []      --定义空列
name_list = list()  --定义空列表
name_tuple = ()     --定义空元组
name_tuple = tuple()--定义空元组
name_set = set()    --定义空集合

name_dict = {} --定义空字典

name_dict = dict() --定义空字典

2,定义一个非空集合



name_set = {'a', 'b', 'c'}
print(name_set)

注意的是,如果定义的时候有两个相同的元素,因为集合是去重的,所以....,你懂的!

name_set = {'a', 'b','b', 'c'}
print(name_set)
print(type(name_set))

 

 3,数据类型转换,把列表转换为集合--(自动去重)



name_list = ['a', 'c', 'b', 'a']
name_set = set(name_list)  # 强制转换
print(name_set)

 

 4,集合运算

集合之间也可进行数学集合运算(例如:并集、交集,差集,对称差集等),可用相应的操作符或方法来实现。


1>交集


  两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。

    intersection() 或者 &



name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.intersection(name2_set))
print(name1_set & name2_set)

 2>,并集

一组集合的并集是这些集合的所有元素构成的集合,

 union() 或者 |



name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.union(name2_set))
print(name1_set | name2_set)

 

 

 3>,差集

A  B 的差集是所有属于 A 且不属于 B 的元素构成的集合
difference() 或者 -
name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name2_set.difference(name1_set))
print(name2_set - name1_set)

 

 

 4>,对称差集

集合A与集合B中只有集合A或集合B有的元素的集合

symmetric_difference() 或者 ^

name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.symmetric_difference(name2_set))
print(name1_set ^ name2_set)

 

 

 5>,是否是子集

子集,为某个集合中一部分的集合,故亦称部分集合,即集合A中所有的元素都是集合B中的元素,则集合A是集合B的子集。

issubset() <= 是返回True,不是返回False
name1_list = ["a", "b", "c"]
name2_list = ["a", "c"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name2_set.issubset(name1_set))
print(name2_set <= name1_set)

print(name1_set<=name2_set)

 

 

 6>,是否是父集

即集合A中所有的元素都是集合B中的元素,则集合B是集合A的子集。
issuperset() >= 是父集返回True,不是则返回False
name1_list = ["a", "b", "c"]
name2_list = ["a", "c"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.issuperset(name2_set))
print(name1_set >= name2_set)

 

 

 7>,是否有交集,


判断两个集合是否无交集:无交集返回True,有交集返回False
isdisjoint()


name1_list = ["a", "b", "c"]
name2_list = ["a", "c"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.isdisjoint(name2_set))

 

 

 

5,集合的方法
name_set = set()
print(dir(name_set))

 

1>,add(),

新增1个元素
name_{'a', 'b'}

name_set.add("c")
print(name_set)

 

 

 2>,clear()

清除set集合中所有元素
name_set = {'a', 'b'}

name_set.clear()
print(name_set)

3>,discard()

删除集合中某个元素,元素存在则删除,不存在则不报错


name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.discard("b")  # 删除存在的元素

print(name_set)

 

 

 4>,pop()

删除随机一个元素.
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.pop()
print(name_set)

5>,remove()

删除某个元素,如果元素存在则删除,不存在则报错
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.remove("b")  #存在的元素

print(name_set)

 

 6>,update()

添加多个元素


name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.update({"m", "n", "b"}) # 列表、元组、集合、字符串
name_set.update(['mnb'])
print(name_set)

 

 

6,类型转化

列表 或者 元组转化为 集合
name_tuple = ("a", "b", 'c')
name_set = set(name_tuple)
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_list = list(name_set) # 集合转换为列表
print(name_list)

7,因为集合是去重的,所有对集合做多的用法就是去重

Mysql中去重的方法有distinct,group by (分组)
python中关于去重的方式就是转化成集合,然后在转化回去。
注意的是,如果字符串想转化为集合,需要先转化成列表,然后再转化成集合。
 

 



 

标签:set,name,python,list,print,name2,name1,集合
来源: https://www.cnblogs.com/shuaiyuan/p/14985561.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有