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) 删除变量
声明:如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。None#python87.com