mysql中update set多个值报错_「set」集合的七情六欲

db993a9a5f653383402739896b3455a3.png

大家好,我是天气又热又冷的阿冷!

前段时间说了组合数据类型的分类:

f4e2626daf273fabc9dbaca905c7f5ca.png

已经学习了序列类型的字符串和列表,以及映射类型的字典,我们今天来学习集合类型。

老实回顾可看:

人间富贵草:Python组合数据类型概述​zhuanlan.zhihu.com
ac9939e735cc5bcca4378a6232da48a3.png

集合数据类型的“七情六欲”

1、集合类型概述

集合同数学中的集合,即包含0个或多个数据项的无序组合。

(1)集合元素唯一存在,不可重复,多用于数据去重场景;

(2)元素类型必须是固定数据类型,即要是可哈希对象;

(3)无索引不可切片无[]访问;

(4)大括号{}表示,元素之间逗号“,”间隔。

小葵花课堂补充知识了!

什么是可哈希(hashable)对象?

答曰:

可哈希对象是指拥有_hash()__(self)内置函数的对象。就目前来说,只要知道列表、集合和字典类型的数据不是可哈希对象即可。

当然,如果你是一个有着强烈钻研精神且不搞明白不睡觉的五好学生(比如我),那就要更加深究一些了。

【莫名的骄傲脸.jpg/png/mp4/mkv/html】

可哈希对象在此处可看成是固定数据类型,对应还有可变数据类型,而界定这两者的标准是:是否可以进行哈希运算。能够进行哈希运算的都可以作为集合的元素。

哈希运算可以将任意长度的二进制值映射为较短的固定长度的二进制值,这个二进制值被称为哈希值。Python提供一个内置的哈希运算函数hash(),对大多数数据类型返回一个哈希值,故可以借此来判断是否是可哈希对象。

>>> hash([1,2])   #列表
Traceback (most recent call last):
  File "<pyshell#79>", line 1, in <module>
    hash([1,2])
TypeError: unhashable type: 'list'
>>> hash({'s':1}) #字典
Traceback (most recent call last):
  File "<pyshell#80>", line 1, in <module>
    hash({'s':1})
TypeError: unhashable type: 'dict'
>>> hash({1})     #集合
Traceback (most recent call last):
  File "<pyshell#81>", line 1, in <module>
    hash({1})
TypeError: unhashable type: 'set'
>>> hash((1,2))   #元组
994727857
>>> hash("WINTER IS COMING!") #字符串
-670332650
>>> hash(100)     #整数
100

2、创建集合

创建空集合:唯一set()函数
>>> set_black = set()
>>> print(set_black)
set()
带元素创建:{……}或者set()
>>> set1 = {10,2.0,"set",3+4j,0o11,0x12,True,(1,'one')}
>>> ls1 = [10,2.0,"set",3+4j,0o11,0x12,True,(1,'one')]
>>> set2 = set(ls1)
#set1和set2一样
>>> print(set1,set2,sep='n')
{True, 2.0, 'set', 10, 9, (1, 'one'), (3+4j), 18}
{True, 2.0, 'set', 10, 9, (1, 'one'), (3+4j), 18}

语法格式:set([iterable])

其中,iterable参数可选,表示一个可迭代对象。

小葵花课堂又双叒叕来补充知识了!

什么是可迭代对象?

可迭代对象是指可以一次返回它的一个元素,比如字符串、列表、字典、元组和集合等可迭代的数据类型,整数不可迭代。

3、插入集合元素

(1)s.add(x):把元素x插入集合s中,x必须为一个可哈希对象,不可是列表、集合和字典类型。

(2)s.update(y):把y拆分成多个元素后再将这多个元素插入集合中,y必须是一个可迭代对象,可以是列表、集合和字典类型等,不可是整数。

上栗子,看看二者区别。

>>> s1=set([1,2])
>>> s2=set([1,2])
>>> s1.add('Python') #使用add方法是将'Python'作为一个元素插入s1中
>>> s2.update('Python') #update方法则是将'Python'拆分成多个元素再插入s2中
>>> print(s1,s2,sep='n')
{1, 2, 'Python'}
{1, 2, 'P', 'n', 't', 'o', 'h', 'y'}
>>> #s1.add([3,4]) #取消注释则报错
>>> s2.update([3,4])
>>> print(s1,s2,sep='n')
{1, 2, 'Python'}
{1, 2, 3, 4, 'P', 'n', 't', 'o', 'h', 'y'}
>>> s1.add(5)
>>> #s2.update(5) #取消注释则报错
>>> print(s1,s2,sep='n')
{1, 2, 5, 'Python'}
{1, 2, 3, 4, 'P', 'n', 't', 'o', 'h', 'y'}

4、集合类型的4种操作:交集&,并集|,差集-,补集^。

注,以下S/W都是集合。

(1)交集&

  • S & W:返回一个新集合,只包含二者相交元素。
  • S &= W:将S & W操作结果赋给S。
>>> S,W = {1,2,3,4,5},{2,5,9}
>>> S & W
{2, 5}
>>> S &= W
>>> S
{2, 5}

(2)并集|

  • S | W:返回一个集合,包含二者全部元素。
  • S |= W:将“S | W”结果赋给S。
>>> S,W = {1,2,3,4,5},{2,5,9}
>>> S | W
{1, 2, 3, 4, 5, 9}
>>> S |= W
>>> S
{1, 2, 3, 4, 5, 9}

(3)差集-

  • S - W:返回一个集合,元素只存在S但不存在与W。
  • S -= W:将“S - W”结果赋给S。
>>> S,W = {1,2,3,4,5},{2,5,9}
>>> S - W
{1, 3, 4}
>>> S
{1, 2, 3, 4, 5}
>>> S -= W
>>> S
{1, 3, 4}

(4)补集^

  • S ^ W:返回一个集合,元素包含二者。
  • S ^= W:将“S - W”结果赋给S。
>>> S,W = {1,2,3,4,5},{2,5,9}
>>> S ^ W
{1, 3, 4, 9}
>>> S ^= W
>>> S
{1, 3, 4, 9}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值