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()    计算集合元素个数


相关文章
|
2天前
|
Python
【Python操作基础】——集合
【Python操作基础】——集合
|
2天前
|
Python
【Python操作基础】——数据类型
【Python操作基础】——数据类型
|
2天前
|
存储 Python
python字符串和字节明确数据类型
【5月更文挑战第6天】python字符串和字节明确数据类型
10 2
|
2天前
|
存储 程序员 Python
Python 数据类型转换详解
Python 数据类型转换详解
17 0
|
2天前
|
Python 容器
Python数据类型转换
Python数据类型转换
|
2天前
|
Python
Python中字典和集合(二)
Python中字典和集合(二)
|
2天前
|
存储 算法 索引
Python中字典和集合(一)
Python中字典和集合(一)
|
2天前
|
索引 Python
【Python21天学习挑战赛】集合 & 数据类型补充
【Python21天学习挑战赛】集合 & 数据类型补充
|
2天前
|
存储 JSON 运维
第三章 Python丰富的数据类型
第三章 Python丰富的数据类型
|
2天前
|
Python
Python从入门到精通——1.2.2学习基础语法和数据类型之控制结构
Python从入门到精通——1.2.2学习基础语法和数据类型之控制结构