python 数据类型之集合

简介: python 数据类型之集合

常见的数据类型:

  • int,整数类型(整形)
  • bool,布尔类型
  • str,字符串类型
  • list,列表类型
  • tuple,元组类型
  • dict,字典类型,一个容器且元素必须是键值对。
  • set,集合类型,一个不允许重复重复 & 可变类型(元素可哈希)。
  • float,浮点类型(浮点型),常见的小数

本节介绍集合

定义

集合(set)是一个 无序 、可变、不允许数据重复的容器。

集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。

可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合。

v1 = { 11, 22, 33, "alex" }

  • 无序,无法通过索引取值。
  • 可变,可以添加和删除元素。

v1 = {11,22,33,44}

v1.add(55)

print(v1) # {11,22,33,44,55}

  • 不允许数据重复。

v1 = {11,22,33,44}

v1.add(22)

print(v1) # {11,22,33,44}

注意:定义空集合时,只能使用v = set(),不能使用 v={}(这样是定义一个空字典)。

添加元素

data = {"a", 'b', "c"}
data.add("d")
print(data)

还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:

s.update( x )

x 可以有多个,用逗号分开。

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Runoob'}
>>> thisset.update([1,4],[5,6])  
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
>>>

集合的元素只能是 int、bool、str、tuple 。

删除、移除元素

移除集合中的元素,且如果元素不存在,不会发生错误

data = {"a", 'b', "c"}
data.discard("a") 
print(data)

还可以使用remove( x )

将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> thisset.remove("Facebook")   # 不存在会发生错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
>>>

我们也可以设置随机删除集合中的一个元素,语法格式如下:

s.pop()

thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()
 
print(x)

多次执行测试结果都不一样。

set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

长度

v = {"刘能", "赵四", "尼古拉斯"}

data = len(v)

print(data)

清空

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()

判断元素是否在集合中存在

判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> "Runoob" in thisset
True
>>> "Facebook" in thisset
False
>>>

for循环

v = {"刘能", "赵四", "尼古拉斯"}

for item in v:

print(item)

交集并(减、&、|)

  1. 减,计算差集

s1 = {"刘能", "赵四", "⽪⻓⼭"}

s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}


s3 = s1 - s2

s4 = s2 - s1

print(s3)

print(s4)

  1. &,计算交集

s1 = {"刘能", "赵四", "⽪⻓⼭"}

s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}

s3 = s1 & s2

print(s3)

  1. |,计算并集

s1 = {"刘能", "赵四", "⽪⻓⼭"}

s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}

s3 = s1 | s2

print(s3)

转换

其他类型如果想要转换为集合类型,可以通过set进行转换,并且如果数据有重复自动剔除。

提示:int/list/tuple/dict都可以转换为集合。

v1 = "武沛齐"

v2 = set(v1)

print(v2) # {"武","沛","齐"}

v1 = [11,22,33,11,3,99,22]

v2 = set(v1)

print(v2) # {11,22,33,3,99}

v1 = (11,22,3,11)

v2 = set(v1)

print(v2) # {11,22,3}

提示:这其实也是去重的一个手段。

data = {11,22,33,3,99}


v1 = list(data) # [11,22,33,3,99]


v2 = tuple(data) # (11,22,33,3,99)

元素必须可哈希

因存储原理,集合的元素必须是可哈希的值,即:内部通过通过哈希函数把值转换成一个数字

目前可哈希的数据类型:int、bool、str、tuple,而list、set是不可哈希的。

对比和嵌套

类型 是否可变 是否有序 元素要求 是否可哈希 转换 定义空
list list(其他) v=[]或v=list()
tuple tuple(其他) v=()或v=tuple()
set 可哈希 set(其他) v=set()

data_list = [

   "alex",

   11,

   (11, 22, 33, {"alex", "eric"}, 22),

   [11, 22, 33, 22],

   {11, 22, (True, ["中国", "北京"], "沙河"), 33}

]

注意:由于True和False本质上存储的是 1 和 0 ,而集合又不允许重复,所以在整数 0、1和False、True出现在集合中会有如下现象:

v1 = {True, 1}

print(v1)  # {True}


v2 = {1, True}

print(v2)  # {1}


v3 = {0, False}

print(v3)  # {0}


v4 = {False, 0}

print(v4)  # {False}

集合内置方法完整列表

方法    描述

add()    为集合添加元素

clear()    移除集合中的所有元素

copy()    拷贝一个集合

difference()    返回多个集合的差集

difference_update()    移除集合中的元素,该元素在指定的集合也存在。

discard()    删除集合中指定的元素

intersection()    返回集合的交集

intersection_update()    返回集合的交集。

isdisjoint()    判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

issubset()    判断指定集合是否为该方法参数集合的子集。

issuperset()    判断该方法的参数集合是否为指定集合的子集

pop()    随机移除元素

remove()    移除指定元素

symmetric_difference()    返回两个集合中不重复的元素集合。

symmetric_difference_update()    移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

union()    返回两个集合的并集

update()    给集合添加元素

len()    计算集合元素个数


相关文章
|
1月前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
74 1
思科设备巡检命令Python脚本大集合
|
1月前
|
Python
【10月更文挑战第7天】「Mac上学Python 13」基础篇7 - 数据类型转换与NoneType详解
本篇将详细介绍Python中的常见数据类型转换方法以及 `NoneType` 的概念。包括如何在整数、浮点数、字符串等不同数据类型之间进行转换,并展示如何使用 `None` 进行初始赋值和处理特殊情况。通过本篇的学习,用户将深入理解如何处理不同类型的数据,并能够在代码中灵活使用 `None` 处理未赋值状态。
59 2
【10月更文挑战第7天】「Mac上学Python 13」基础篇7 - 数据类型转换与NoneType详解
|
1月前
|
编译器 数据安全/隐私保护 Python
Python--基本数据类型
【10月更文挑战第4天】
|
1月前
|
存储 缓存 API
解密 Python 集合的实现原理
解密 Python 集合的实现原理
39 11
|
1月前
|
存储 Python
python数据类型、debug工具(一)
python数据类型、debug工具(一)
|
1月前
|
存储 自然语言处理 数据处理
使用Python计算多个集合的交集详解
使用Python计算多个集合的交集详解
42 1
|
1月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
23 3
|
2月前
|
存储 API 索引
Python 的集合是怎么实现的?
Python 的集合是怎么实现的?
48 9
|
2月前
|
存储 Java C++
30天拿下Python之数据类型
30天拿下Python之数据类型
37 4
|
2月前
|
存储 索引 Python
Python常用数据结构——集合
Python常用数据结构——集合
下一篇
无影云桌面