本文共 1986 字,大约阅读时间需要 6 分钟。
Python语言中的集合和数学上概念上的集合类似,被用来存放一组无序且互不相同的元素。
组成集合的元素不可更改,必须是不可变数据类型
集合是多个元素的无序组合
集合中的每个元素唯一,不存在相同的元素
不可变数据类型:整数、浮点数、复数、字符串类型、元组类型
集合的创建和字典类似,也是直接将元素放在一对{ }中,元素之间使用,分隔
set1 = {元素1, 元素2,...}
>>> set1 = { 6,3,3,(5,6),"str",8.8}>>> set1{ 3, 6, 'str', 8.8, (5, 6)}注:集合中包含重复元素3,但是完成创建之后的集合,只保留了一个
在使用空的set1= { }直接创建的是字典,而不是集合
创建空的集合不可以使用{ }
Python内置函数set()用来将序列转换为集合,在转换的过程中重复的元素只会保留一个
s1 = set(序列类型元素)注set()函数最多只能设定一个参数并且序列类型数据不能是字典
>>> s1 = set("Hello world!")>>> s2 = set([1,2,3,4,2,1,5])>>> s3 = set((1,2,"str"))>>> s1{ 'H', 'e', 'r', 'w', 'd', 'l', ' ', '!', 'o'}>>> s2{ 1, 2, 3, 4, 5}>>> s3{ 'str', 1, 2}注:set()函数在将序列转换为集合时自动去掉重复项
创建空的集合不能使用一对{ },这样创建的是个空字典
只能使用不带参数的set()函数
语法:
>>> s1 = set()>>> type(s1)
集合的元素是无序的,也没有键和值的概念,所以集合元素的访问
要么通过集合名整体输出
要么通过for循环实现元素的遍历
将参数item作为元素添加到集合s中,如果item是序列,则将其作为一个元素整体加入集合
作为参数的item只能是不可变的数据
>>> s{ 2, 3, 4}>>> s.add({ 1,2})Traceback (most recent call last): File "", line 1, in s.add({ 1,2})TypeError: unhashable type: 'set'>>> s.add([1,2])Traceback (most recent call last): File " ", line 1, in s.add([1,2])TypeError: unhashable type: 'list'注:这时候会报错。原因是set 加入的元素得不可hash的。
那么哪些是可哈希元素?哪些是不可哈希元素?
可哈希的元素有:int、float、str、tuple 不可哈希的元素有:list、set、dict为什么 list 是不可哈希的,而 tuple 是可哈希的
(1)因为 list 是可变的在它的生命期内,你可以在任意时间改变其内的元素值。 (2)tuple却不可以改变它的值将参数序列items中的元素拆分去重之后加入集合
参数items可以是可变数据
将指定元素item从集合s中删除
如果元素item在集合中不存在,系统会报错
将指定元素item从集合s中删除,
如果item在集合中不存在,系统正常执行,无任何输出从集合s中随机删除并返回这一个删除的元素
清空集合中的所有元素
但是集合任然存在判断元素item是否在集合s中,
若在,返回True 若不在,返回False可配合remove()函数使用
转载地址:http://qmxzi.baihongyu.com/