Python集合 set
集合定义
集合是一组无序不重复的元素集合。
可以理解为是没有值的字典
集合与之前列表、元组类似,可以存储多个数据,但是这些数据是不重复的。
可以使用大括号 { }
或者 set()
函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
它的主要作用是,进行成员关系测试和消除重复元素。在数据清洗领域运用的还是比较多的。
创建一个集合
>>> s1 = {1,2,3,4}
>>> type(s)
<class 'set'>
正常情况下,要定义一个set类型的变量,使用大括号或是set函数都可以。
但是想定义一个空的set的变量的时候,就必须要使用到set函数。
元组里面没有相同的元素(去重)
>>> num = {1,2,3,4,5,6,6}
>>> num
{1, 2, 3, 4, 5, 6}
>>>
集合对象还支持交集(intersection),差集(difference)、并集和对称差集(sysmmetric_difference)
交集(&): 两个集合的公共部分
并集(|): 两者集合合并,没有重复元素
差集(-): 只有前项有的元素,不存在后项中的元素。
对称差集(^):只在a或b中,但是不会同时出现在二者中
>>> a = set('1234')
>>> b = set('3456')
交集:&
两个集合的公共部分
>>> a&b
{'4', '3'}
并集:|
两者集合合并,没有重复元素'
>>> a|b
{'1', '6', '5', '2', '4', '3'}
差集:-只有前项有的元素,不存在后项中的元素。
>>> a-b
{'1', '2'}
对称差集(^):只存在a或者b中,但是不会同时出现在二者中
>>> a^b
{'1', '6', '5', '2'}
>>>
>>> a = 'hello'
set、list、tuple之间可以相互转换
字符串转列表
>>> b = list(a)
>>> b
['h', 'e', 'l', 'l', 'o']
字符串转元组
>>> c = tuple(a)
>>> c
('h', 'e', 'l', 'l', 'o')
字符串转集合
>>> d = set(a)
>>> d
{'l', 'e', 'o', 'h'}
>>> a
'hello'
>>> b
['h', 'e', 'l', 'l', 'o']
>>> c
('h', 'e', 'l', 'l', 'o')
>>> d
{'l', 'e', 'o', 'h'}
>>>
集合操作
增添 add 为集合无规律添加元素
update 也可以添加元素,且参数可以是不同类型,并用逗号分隔开
删除 remove 删除集合中的指定元素,当指定的元素不存在的时候会报错
discard 是删除集合中的指定元素,且如果元素不存在的时候,不会报错
pop 无逻辑删除元素
s.add(x)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Google', 'Taobao', 'Runoob', 'Facebook'}
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update(x)
注:x可以是多个值,用逗号分隔开
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{3, 'Google', 'Taobao', 'Runoob', 1}
>>>
>>> thisset.update([1,4],[5,6])
>>> print(thisset)
{'Taobao', 1, 3, 4, 5, 6, 'Google', 'Runoob'}
移除元素
s.remove(x) 删除集合中的指定元素,当指定的元素不存在的时候会报错
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>>
>>> thisset.remove("Facebook")
Traceback (most recent call last):
File "<pyshell#92>", line 1, in <module>
thisset.remove("Facebook")
KeyError: 'Facebook'
>>>
s.discard(x) 也是删除集合中的指定元素,且如果元素不存在的时候,不会发生错误
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook")
>>> print(thisset)
{'Google', 'Taobao', 'Runoob'}
>>> thisset.discard("Google")
>>> print(thisset)
{'Taobao', 'Runoob'}
s.pop() 随机删除集合中的一个元素
>>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
>>> thisset.pop()
'Google'
>>> print(thisset)
{'Taobao', 'Runoob', 'Facebook'}
数据类型比较 | 字符串 | 列表 | 元组 | 字典 | 集合 |
---|---|---|---|---|---|
是否有序 | 是 | 是 | 是 | 否 | 否 |
是否可修改 | 否 | 是 | 不 | 是 | 是 |
方法多少 | 很多 | 一般 | 很少 | 较多 | 一般 |
可变类型与不可变类型
可变类型,值可以改变:
- 列表 list
- 字典 dict
- 集合 set
不可变类型,值不可以改变:
- 数值类型 int, long(Python3去除), bool, float
- 字符串 str
- 元组 tuple
通用方法整合
常见操作 | Python 表达式 | 结果 | 描述 | 支持的数据类型 |
---|---|---|---|---|
+ | [1, 2] + [3, 4] | [1, 2, 3, 4] | 合并 | 字符串、列表、元组 |
* |
'Hi!' * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 复制 | 字符串、列表、元组 |
in | 3 in (1, 2, 3) | True | 元素是否存在 | 字符串、列表、元组、字典、集合 |
not in | 4 not in (1, 2, 3) | True | 元素是否不存在 | 字符串、列表、元组、字典、集合 |
注意,in在对字典操作时,判断的是字典的键
公共方法
Python内置函数
Python包含了以下内置函数
序号 | 方法 | 描述 |
---|---|---|
1 | len(item) | 计算容器中元素个数 |
2 | max(item) | 返回容器中元素最大值 |
3 | min(item) | 返回容器中元素最小值 |
4 | del(item) | 删除变量 |