优秀的编程知识分享平台

网站首页 > 技术文章 正文

容易忽略的数据类型:集合(set)(set集合的作用)

nanyue 2024-10-01 13:09:53 技术文章 12 ℃

python中数据类型定义明确:

1、字符串

2、布尔类型

3、整数

4、浮点数

5、数字

6、列表

7、元组

8、字典

9、日期

这些是我们经常用到的,有一个数据类型:集合,一个很有用的类型,同时也最容易忽略。

  • 介绍

set(集合),是一个无序且不重复的元素集合。集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。

集合最重要的特征就是无序不重复,这个特性让我们可以对特定数据进行快捷处理。

  • 使用

生成一个set对象,一种方法是创建,一种方法是转换。

创建一个set:

操作一个set集合:

class set(object):

def add(self, *args, **kwargs): #添加元素

def clear(self, *args, **kwargs): # 清除内容

def copy(self, *args, **kwargs): # 浅拷贝

def difference(self, *args, **kwargs): # new_set.defference(setA,setB) :A中存在,B中不存在

def difference_update(self, *args, **kwargs): #new_set.defference_update(setA,setB) :从A集合中删除和B中相同的元素

def discard(self, *args, **kwargs): #移除指定元素,不存在不保错

def intersection(self, *args, **kwargs): #求交集,返回一个新集合

def intersection_update(self, *args, **kwargs): #new_set.intersection_update(setA,setB) :取交集并更更新到A中

def isdisjoint(self, *args, **kwargs): # 如果没有交集,返回True,否则返回False

def issubset(self, *args, **kwargs): # 是否是子序列

def issuperset(self, *args, **kwargs): # 序列

def pop(self, *args, **kwargs): # 移除元素,并返回该元素

def remove(self, *args, **kwargs): # 移除指定元素,不存在保错

def symmetric_difference(self, *args, **kwargs): #返回两个集的对称差集作为一个新的集合。

def symmetric_difference_update(self, *args, **kwargs):new_set.symmetric_difference_update(A,B) :返回两个集的对称差集更新到A中

def union(self, *args, **kwargs): # 返回并集

def update(self, *args, **kwargs): # 更新集合

看到一个集合的操作方法,是不是觉得集合对数据处理存在着异常的方便呢?

  • 转换

python中list,dict,tuple都可以直接转换成set集合:

list或tuple转换的同时如果存在相同元素会自动保留一个。

  • 注意

在使用集合的时候,由于集合的性质,集合中的元素需为hash值,所以集合元素需保证为不可变元素。

如下图异常:


异常为:unhashable type: 'list' (数据类型不能被hash)

这种情况需要避免,方法可以将list中的可变元素更新为不可变元素在求集合,然后再更新回来,方法如下:


流程就是:数据转换 → 类型转换→类型转换→数据转换

我是以易读的方式处理的,生成环境中可以简写,提高代码执行效率。

更多的实践需要自行实现,欢迎订阅我的文章。

此文章为python实践派原创,特此声明!

最近发表
标签列表