Python数据类型之集合类型
2021/4/28 22:25:14
本文主要是介绍Python数据类型之集合类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
创建集合
集合(set)是一个无序不可重复的元素序列。
创建集合可以使用 {}
或 set()
函数,但是创建空集合只能使用set()
,因为 {}
用来创建字典。
# 创建有数据的集合 set1 = {1, 2, 3, 4, 5, 6} print(set1) # {1, 2, 3, 4, 5, 6} # 集合中的数据不能重复 set2 = {1, 2, 3, 4, 3, 5, 5} print(set2) # {1, 2, 3, 4, 5} # 使用set函数创建集合 set3 = set("helloworld") print(set3) # {'h', 'w', 'r', 'e', 'o', 'd', 'l'} # 创建空集合 set4 = set() print(set4) # set() print(type(set4)) # <class 'set'> set1 = {"a", "b", "c", "d"} # 因为集合是无序的,所以不能通过下标获取和修改元素 set1[2] set1[0] = "aa"
注: 集合是可变数据类型。
集合中的元素要求
集合中的元素必须是可以hash的值。可以hash的数据类型包括:int、bool、str、tuple,所以集合中的数据类型只能是这几种,而list、set、dict是不可hash的。
print(hash("abc")) # 1414493781617976884 # TypeError: unhashable type: 'list' print(hash([1, 2, 3]))
注:由于True和False本质上是1和0,所以存在如下情况:
set1 = {True, 1} print(set1) # {True} set2 = {1, True} print(set2) # {1}
集合相关的操作
&
取两个集合的交集
set1 = {1, 2, 3, 4} set2 = {2, 4, 6, 8} print(set1 & set2) # {2, 4}
|
取两个集合的并集
set1 = {1, 2, 3, 4} set2 = {2, 4, 6, 8} print(set1 | set2) # {1, 2, 3, 4, 6, 8}
-
取两个集合的差集
set1 = {1, 2, 3, 4} set2 = {2, 4, 6, 8} # set1中有且set2中没有的值 print(set1 - set2) # {1, 3} # set2中有且set1中没有的值 print(set2 - set1) # {8, 6}
in
判断数据是否在集合中。
set1 = {1, 2, 3, 4, 5} print(3 in set1) # True print(6 in set1) # False
not in
判断数据是否不在集合中。
set1 = {1, 2, 3, 4, 5} print(3 not in set1) # False print(6 not in set1) # True
集合常见的方法
add()
向集合中添加元素。
set1 = {1, 2, 3} set1.add(4) print(set1) # {1, 2, 3, 4} # 集合可以去重,重复添加的数据最终只会有一个 set1.add(4) print(set1) # {1, 2, 3, 4}
不能添加数据序列,会报TypeError:
set1.add([10, 20, 30]) # TypeError: unhashable type: 'list'
update()
向集合中添加另一个可迭代集合。
set1 = {1, 2, 3} set1.update([4, 5, 6]) print(set1) # {1, 2, 3, 4, 5, 6}
不能添加单个元素,会报TypeError:
set1 = {1, 2, 3} set1.update(10) # TypeError: 'int' object is not iterable
remove()
删除集合中指定数据,如果数据不存在会报错。
set1 = {1, 2, 3, 4, 5} set1.remove(1) print(set1) # {2, 3, 4, 5} # 当删除不存在的数据,会报KeyError set1.remove(6) # KeyError: 6
discard()
删除集合中的指定数据,如果数据不存在不报错。
set1 = {1, 2, 3, 4, 5} set1.discard(6) print(set1) # {1, 2, 3, 4, 5}
pop()
随机删除集合中某个数据,并返回这个数据。
set1 = {1, 2, 3, 4, 5} set2 = set1.pop() print(set2) # 1 print(set1) # {2, 3, 4, 5}
intersection()
取两个集合的交集,和操作符 &
一样。
set1 = {1, 2, 3, 4} set2 = {2, 4, 6, 8} print(set1.intersection(set2)) # {2, 4}
union()
取两个集合的并集,和操作符 |
一样
set1 = {1, 2, 3, 4} set2 = {2, 4, 6, 8} print(set1.union(set2)) # {1, 2, 3, 4, 6, 8}
difference()
取两个集合的差集,和操作符 -
一样
set1 = {1, 2, 3, 4} set2 = {2, 4, 6, 8} # set1中有且set2中没有的值 print(set1.difference(set2)) # {1, 3} # set2中有且set1中没有的值 print(set2.difference(set1)) # {8, 6}
集合推导式
类似于列表推导式,集合也支持推导式形式
list1 = [1, 2, 3, 2, 4, 5] set1 = {i ** 2 for i in list1} print(set1) # {1, 4, 9, 16, 25}
这篇关于Python数据类型之集合类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程