首页 > 编程语言 >python 集合

python 集合

时间:2022-09-26 22:00:33浏览次数:55  
标签:11 set 22 python s1 33 哈希 集合

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

1.定义

s = {11,22,33}

无序,无法通过索引取值

可变,可以添加和删除元素

不允许数据重复

用途:如果有一个数据类型不允许重复,那么此时应该用集合

注意: 定义空集合v = set() 而非 v = {}, v={}默认未定义字典

v1 = []  等同 v1 = list()

v2 = ()  等同v2 = tuple()

v3 = set()

v4 = {}  等同v4 = dict()

 

2.独有功能

s = {11,22,33}

2.1 添加元素 add()

s.add('sss')  #  {11,22,33, 'sss'}

2.2 删除元素 discard()

s.discard(33)  #  {11,22,'sss'}

2.3 交集 intersection()  或者 &

s1 = {11,22,33}

s2 = {33,44,55}

s1.intersection(s2)  #  {33}

s1 & s2  # {33}

2.4 并集  union()  或者 |

s1 = {11,22,33}

s2 = {33,44,55}

s1.union(s2)  #  {11,22,33,44,55}

s1 | s2  # {11,22,33,44,55}

2.5 差集  difference()  或者 -

s1 = {11,22,33}

s2 = {33,44,55}

s1.difference(s2)  #  {11,22}

s2 - s1  # {44,55}

2.公共功能

2.1 减 计算差集(-)

2.2 计算交集(&)

2.3 计算并集(|)

2.4 计算长度(len(s))

2.5 for循环 for char in s

3.转换

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

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

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

4.存储原理

4.1集合的存储原理

s1 = set()

s1.add('流年')

第一步:利用哈希函数将字符串'流年'转化为一个数值,例如24

第二步:取余数(实际掩码&运算)   24%7 = 3

第三步:将字符串'流年'放在哈希表3的索引位置

4.2集合的元素必须可哈希

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

目前可哈希的数据类型(元素指定的是集合的每个子元素):int、bool、str、tuple,而list、set、dict是不可哈希的。

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

集合转化:

v1 = [11,22,33]

v2 = set(v1)  # {11,22,33}  # 转化成功

v3 = [11,[2,3],44]

v4 = set(v3)  # 报错

注意:由于集合的可哈希存储,所以集合遍历的查找效率特别高(比起for遍历list,tuple,dict)

4.3对比和嵌

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

 

 

 

 

注意:由于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}

标签:11,set,22,python,s1,33,哈希,集合
From: https://www.cnblogs.com/liunian9527/p/16723922.html

相关文章

  • python2和python3区别
    区别1:python2中需要用户自己制定数据类型,写什么类型就是什么数据类型,写字符串要加双引号。python3中不管什么数据类型都会转成字符串。python中的raw_input与python3......
  • python学习day04
    上周内容回顾PEP8规范1.井号后跟注释文字时,井号和前面的代码空两格,和后面的注释文字空一格。2.井号单独起一行后跟注释文字时,和后面的注释文字空一格。3.列表、......
  • python5
    python数据类型数据类型-布尔值(bool)1.判断失误的对错是否可行只用于流程控制中2.只有两种状态:True对的False错的3.python中所有数值自带布尔值......
  • python小白入门学习day04
    python小白入门学习day04目录§一、周末内容回顾1、PEP8规范2、python注释语法3、变量与常量4、数据类型§二、今日内容详细1、作业详解2、基本数据类型之布尔值bool2、基......
  • 集合笔记记录
    目录Collection基础概念List1.ArrayList1.1ArrayList的特点:1.2ArrayList构造源码分析:2.LinedList2.1基本介绍2.2LinkedList源码分析2.2.1构造源码2.2.2添加方......
  • python
    python数据类型基础数据类型之布尔值bool+布尔值bool用来判断事物的对错,是不是可行。主要用于流程控制中只有两种形态1.True对的,真的,可行的2.False错的,假的,......
  • Python-函数-算术函数
    #python-函数-算术函数#(1)加减乘除#加法add(),减法subtract(),乘法multiply(),除法divide()#作用:数组间的加减乘除importnumpyasnpx=np.arange(9,dtype=......
  • python基本数据类型二
    python基本数据类型二1.布尔值bool描述用于判断事物的对错,是否可行,主要用于流程控制状态只有两种状态True和falseTrue对的,真的,可行的False错的,假的,不可行......
  • python中组合数据的操作
    2022-09-26组合数据类型:列表   字典   集合   元组拷贝:   deep(深拷贝)   shallow(浅拷贝)  区别:例如,文件中有一个指针指向另一块存储空间......
  • Python学习之路04
    今日内容总结1.基本数据类型布尔值bool布尔值是用来判断对错的,我们主要用于流程控制中布尔值只有两种表达方式:True/Falseps:要首字母大写Python中的所有数据都是由布......