大家好,小编来为大家解答以下问题,python中3//2的值为1.5,python中2**3等于多少,今天让我们一起来看看吧!
1 set的定义
dict,list,tuple的定义方法把大中小括号用完了,创建一个空的set就只能用set()了:
>>> s = set()
>>> type(s)
当然还有一种创建包含了元素的set,仍然可以使用大括号{}来初始化,这时候解释器会根据{} 内部的组织形式自动推导为set还是dictGPT改写。
>>> s={1:10,2:20,3:30}
>>> type(s)
#逗号分隔的是一组冒号隔开的数据,所以解释器推导为字典。
>>> s={1,2,3}
>>> type(s)
#逗号分隔的是单个的数据,所以解释器推导为集合
2 set的元素类型
直接上代码实验:
>>> s = {1,2,3}
>>> print(s)
{1, 2, 3}
>>> s = {1.1, 2.2 ,3.3}
>>> print(s)
{1.1, 2.2, 3.3}
>>> s = {‘juzicode’,’桔子code’}
>>> print(s)
{‘桔子code’, ‘juzicode’}
>>> s = {(1,2,3),(4,5,6)}
>>> print(s)
{(1, 2, 3), (4, 5, 6)}
>>> s ={[1,2,3],[4,5,6]}
Traceback (most recent call last): File “”, line 1, in
TypeError: unhashable type: ‘list’
>>> s = { {‘a’:1,’b’:2} }
Traceback (most recent call last): File “”, line 1, in
TypeError: unhashable type: ‘dict’
从实验结果看,set的元素类型不能是list和dict,因为他们是unhashable类型的数据,这和字典的key类型的要求是一样的。
【实验】定义一个set a,将这个a作为一个元素放到set b中,看下是什么结果?
3计算长度len(s)
计算长度和str,list,tuple,dict一样,使用len()计算set的长度:
>>> s={1,2,3}
>>> len(s)3
4添加/删除元素
s.add(x):往set中增加x元素,如果x已经存在,set不会发生变化,如果x不存在,set元素增加x;
s.remove(x):删除set中x元素,如果x不存在,则抛异常;
s.pop():随机删除一个元素,注意括号中是没有数据的。
s1.update(s2):s2的元素拆成单个后往s1中添加,类似list的extend()
源码print(‘—–欢迎来到’)
print(‘—–公众号: juzicode/桔子code\n’)
print(‘set实验:添加删除元素’)
s={1,2,3}
print(‘初始s: ‘,s)
s.add(1)
print(‘add(1)后的set: ‘,s)
s.add(4)
print(‘add(4)后的set: ‘,s)
s.remove(1)
print(‘remove(1)后的set: ‘,s)
#s.remove(5)
#print(‘remove(5)后的set: ‘,s)
s.pop()print(‘pop()后的set: ‘,s)
s.pop()print(‘pop()后的set: ‘,s)
s.update({7,8,9})
print(‘update(7,8,9)后的set: ‘,s)
结果—–欢迎来到
—–公众号: juzicode/桔子code
set实验:添加删除元素初始
s: {1, 2, 3}
add(1)后的set: {1, 2, 3}
add(4)后的set: {1, 2, 3, 4}
remove(1)后的set: {2, 3, 4}
pop()后的set: {3, 4}
pop()后的set: {4}
update(7,8,9)后的set: {4, 7, 8, 9}
5并集/差集/交集
既然是集合,就会存在求并集、差集和交集的操作:
s1.difference(s2):计算s1有s2没有的元素;
s1.union(s2):计算s1和s2的并集,如果有元素重叠,只保留一个元素;
s1.intersection(s2):计算s1和s2的交集;
s1.symmetric_difference(s2):计算s1和s2的对称差集,对称差集就是2个集合的并集减交集;
源码s1={1,2,3,4,5}
s2={4,5,6}
print(‘初始s1: ‘,s1)
print(‘初始s2: ‘,s2)
sd = s1.difference(s2)
print(‘s1和s2的差集: ‘,sd)
su = s1.union(s2)
print(‘s1和s2的并集: ‘,su)
si = s1.intersection(s2)
print(‘s1和s2的交集: ‘,si)
ssd = s1.symmetric_difference(s2)
print(‘s1和s2的对称差集: ‘,ssd)
结果初始s1: {1, 2, 3, 4, 5}
初始s2: {4, 5, 6}
s1和s2的差集: {1, 2, 3}
s1和s2的并集: {1, 2, 3, 4, 5, 6} #重复元素只保留同一个
s1和s2的交集: {4, 5}
计算差、并、交、对称差集还可以使用符号来完成,上面例程中利用符号计算的结果是:
源码print(‘s1-s2: ‘,s1-s2) #差集
print(‘s1|s2: ‘, s1|s2) #并集
print(‘s1&s2: ‘, s1&s2) #交集
print(‘s1^s2: ‘, s1^s2) #对称差集
结果s1-s2: {1, 2, 3}
s1|s2: {1, 2, 3, 4, 5, 6}
s1&s2: {4, 5}
s1^s2 : {1, 2, 3, 6}
计算并集是不是也可以用加号,答案却是否定的,set不支持用加号进行求并集操作。
print(‘s1+s2: ‘,s1+s2)
TypeError: unsupported operand type(s) for +: ‘set’ and ‘set’
6判断
s1.isdisjoint(s2):s1和s2的元素是否都不相同,如果不相同返回True;
s1.issubset(s2):s1是否是s2的子集
s1.issubset(s2):s1是否是s2的超集
源码s1={1,2,3}
s2={1,2,3,4,5,6}
print(‘初始s1: ‘,s1)
print(‘初始s2: ‘,s2)
print(‘s1和s2元素都不一样: ‘,s1.isdisjoint(s2))
print(‘s1是否是s2的子集: ‘,s1.issubset(s2))
print(‘s1是否是s2的超集: ‘,s1.issuperset(s2))
结果—–欢迎来到—–公众号: juzicode/桔子code
初始s1: {1, 2, 3}
初始s2: {1, 2, 3, 4, 5, 6}
s1和s2元素都不一样: False
s1是否是s2的子集: True
s1是否是s2的超集: False
原文地址1:https://blog.csdn.net/weixin_39653361/article/details/110837164
参考资料:python中用turtle画一个圆形 https://blog.csdn.net/SXIAOYAN_/article/details/140061099