初识Python第三天

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识Python第三天相关的知识,希望对你有一定的参考价值。

一.set集合

  set是一个无序且不重复的元素集合

1 print(dir(set))
2 
3 #[‘__and__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__gt__‘, ‘__hash__‘, ‘__iand__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__ior__‘, ‘__isub__‘, ‘__iter__‘, ‘__ixor__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__ne__‘, ‘__new__‘, ‘__or__‘, ‘__rand__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__ror__‘, ‘__rsub__‘, ‘__rxor__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__sub__‘, ‘__subclasshook__‘, ‘__xor__‘, ‘add‘, ‘clear‘, ‘copy‘, ‘difference‘, ‘difference_update‘, ‘discard‘, ‘intersection‘, ‘intersection_update‘, ‘isdisjoint‘, ‘issubset‘, ‘issuperset‘, ‘pop‘, ‘remove‘, ‘symmetric_difference‘, ‘symmetric_difference_update‘, ‘union‘, ‘update‘]
技术分享
 1 l1 = [11, 22, 33,]
 2 l2 = [44, 55, 66, ]
 3 
 4 s1 = set(l1)  #将一组可迭代的数据传入set集合
 5 print(s1) 
 6 
 7 s1.add(alex)  #给s1添加一个新元素alex,
 8 print(s1)
 9 
10 s1.add(alex)  #给s1传入一个相同的元素后,对比输出结果二和三,结果并没有改变,由此可见s1集合是一个无序且不重复的元素集合
11 print(s1)
12 
13 #{‘11‘, ‘33‘, ‘22‘}          #第一次输出
14 #{‘11‘, ‘33‘, ‘22‘, ‘alex‘} #第二次输出
15 #{‘11‘, ‘33‘, ‘22‘, ‘alex‘} #第三次输出
add 添加不重复的元素
技术分享
1 #difference生成一个新的集合,将新传入的集合移除掉,不能对原来的集合进行修改,需要重新赋值给一个变量
2 
3 s2 = set([alex, eric, tony, ])
4 s3 = s2.difference([alex, eric])
5 print(s3)   
6 #结果输出 {‘tony‘}
difference 差异比较
技术分享
1 s2 = set([alex, eric, tony, alex])
2 s4 = s2.difference_update([alex, eric,jack])
3 print(s2)   #结果输出 {‘tony‘}
4 print(s4)   #结果输出  None
5 
6 #difference_update将原来的集合修改,difference_update和difference都是将新传入的集合删掉,不同之处在于difference是生成一个新的集合,difference_update是对原来的集合进行修改,不会生成一个新的集合
difference_update 差异更新
技术分享
1 s2 = set([alex, eric, tony,])
2 s3 = s2.discard(eric)
3 print(s2)    
4 
5 #结果输出{‘tony‘, ‘alex‘}
discard删除一个元素
技术分享
1 #pop随机删除一个元素,并获取删除的这个元素,可将删除的这个元素赋值给变量
2 
3 s2 = set([alex, eric, tony,])
4 ret = s2.pop()
5 print(s2)  #结果输出{‘alex‘, ‘eric‘}
6 print(ret)  #从新赋值给变量ret ,结果输出 tony
pop 随机删除元素
技术分享
1 #remove移除元素,需要指定参数,remove没有返回值
2 
3 s2 = set([alex, eric, tony,])
4 s2.remove(eric)  
5 print(s2)   #结果输出 {‘alex‘, ‘tony‘}
remove移除指定元素
技术分享
 1 l1 = [alex, eric, jack, laiying,]
 2 l2 = [jack, tom, laiying,]
 3 s1 = set(l1)
 4 s2 = set(l2)
 5 print(s1)
 6 s3 = s1.intersection(s2)
 7 print(s1)
 8 print(s2)
 9 print(s3)
10 
11 
12 #{‘eric‘, ‘alex‘, ‘laiying‘, ‘jack‘}  第一次原始集合
13 #{‘eric‘, ‘alex‘, ‘laiying‘, ‘jack‘}  集合s1和s2进行交集判断后的输出结果,并没有改变对象本身
14 #{‘laiying‘, ‘tom‘, ‘jack‘}   s2集合没有发送改变
15 #{‘laiying‘, ‘jack‘}   通过交集比较,返回了一个新的元素集合,返回的是s1和s2共同拥有的元素集合
intersection取交集元素集合
技术分享
 1 l1 = [alex, eric, jack, laiying,]
 2 l2 = [jack, tom, laiying,]
 3 s1 = set(l1)
 4 s2 = set(l2)
 5 print(s1)
 6 
 7 s3 = s1.intersection_update(s2)
 8 print(s1)
 9 print(s3)
10 
11 #通过输出结果可以看出,s1直接更新了自己,把与传入的集合,与集合里面不相同的元素删掉,且没有返回值
12 {laiying, eric, alex, jack}
13 {laiying, jack}
14 None
indersection_update 交集更新
技术分享
 1 l1 = [alex, eric,]
 2 l2 = [tom, jack,]
 3 s1 = set(l1)
 4 s2 = set(l2)
 5 print(s1)
 6 
 7 s3 = s1.isdisjoint(s2)
 8 print(s1)
 9 print(s3)
10 
11 #{‘eric‘, ‘alex‘}
12 #{‘eric‘, ‘alex‘}
13 #True
14 
15 #当两个集合之间没有任何交集时,就返回True,否则就返回False
isdisjoint判断是否没有交集
技术分享
 1 l1 = [alex, eric, jack,]
 2 l2 = [tom,laiying,]
 3 s1 = set(l1)
 4 s2 = set(l2)
 5 s3 = set([alex, jack,])
 6 
 7 
 8 print(s1.issubset(s2))  #输出为False说明s1不是s2的子集
 9 print(s1.issubset(s3))  #输出False说明不是s3的子集
10 print(s3.isdisjoint(s1)) #输出True说明s3是s1的子集
11 
12 #结果输出
13 #False
14 #False
15 #True
issubset 是否是子集
技术分享
1 l1 = [alex, eric, jack,]
2 l2 = [tom,laiying,]
3 s1 = set(l1)
4 s2 = set(l2)
5 s3 = set([alex, jack,])
6 
7 print(s1.issuperset(s3))  #结果输出True,说明s1是s3的父集
8 print(s3.issuperset(s1)) #结果输出False,说明s3不是s1的父集
issuperset是否是父集
技术分享
 1 #symmetric_difference,该对象返回一个新的集合,传入的元素与对象本身比较,如果传入的元素里面有的元素,而对象本身没有,则添加到对象本身集合内,最终返回一个新的集合
 2 
 3 l1 = [alex, eric, jack,]
 4 l2 = [tom,laiying,]
 5 s1 = set(l1)
 6 s2 = set(l2)
 7 s3 = set([alex, jack,])
 8 print(s1)
 9 #结果输出 {‘eric‘, ‘alex‘, ‘jack‘}
10 s4 = s1.symmetric_difference(s2)
11 
12 print(s1)
13 #结果输出 {‘eric‘, ‘alex‘, ‘jack‘}
14 print(s4)
15 #结果输出{‘eric‘, ‘alex‘, ‘tom‘, ‘laiying‘, ‘jack‘}
symmetric_difference 差集对比
技术分享
 1 #symmetric_difference_update差集更新,直接扩展对象本身与传入集合的没有交集的元素
 2 
 3 l1 = [alex, eric, jack,]
 4 l2 = [tom,laiying,]
 5 s1 = set(l1)
 6 s2 = set(l2)
 7 
 8 print(s1)  #s1原始集合,结果输出 {‘eric‘, ‘alex‘, ‘jack‘}
 9 s4 = s1.symmetric_difference_update(s2)
10 print(s1)  #s1差集后的结果输出{‘laiying‘, ‘eric‘, ‘alex‘, ‘jack‘, ‘tom‘}
11 print(s4)  #该方法没有返回值  None
s1.symmetric_difference_update 差集更新
技术分享
1 #union返回新集合,j将对象本身与传入的集合元素比较,把所有的元素重新组合成一个新的集合返回
2 l1 = [alex, eric, jack,]
3 l2 = [tom,laiying,]
4 s1 = set(l1)
5 s2 = set(l2)
6 s4 = s1.union(s2)
7 
8 print(s1) #结果输出{‘eric‘, ‘alex‘, ‘jack‘},对象本身没有变化
9 print(s4) #结果输出{‘laiying‘, ‘jack‘, ‘alex‘, ‘tom‘, ‘eric‘}
union 返回新集合
技术分享
1 #update更新集合,将会对集合本身进行扩展,如果对象本身不存在这个传入的元素,则添加到对象本身的元素集合
2 
3 dic1 = {k1:v1, k2:v2}
4 dic2 = {k1:v1, k2:v2, k3:v3}
5 s1 = set(dic1)
6 print(s1) #结果输出{‘k1‘, ‘k2‘}
7 
8 s2 = s1.update(dic2)
9 print(s1)  #结果输出 {‘k3‘, ‘k1‘, ‘k2‘}
update更新集合

 

以上是关于初识Python第三天的主要内容,如果未能解决你的问题,请参考以下文章

猛新自闭学习第三天初识命令

Java学习第三天 初识数组

Python 学习第三天--GUI桌面项目

python第三天

三天讲透SpringBoot-初识基础使用

Python 第三天