python学习-集合(创建、add、remove、discard、与、或、去同、存异)
集合
- 創建
- 集合的使用
創建
字典的keys和values的返回值是list,并不是set,set是用{}
set和元組類似,不可變對象,該對象所指向的內存中的值不能被改變。即元素不能修改值。
set內部是無序的,每次運行打印的結果會不一樣。
見代碼:
set1 = {'a', 'b', 'c'} print(type(set1)) print('a' in set1) lst1 = [1, 2, 3, 4, 5, 6, 6, 4, 5, 6] set2 = set(lst1) print(set2, type(set2))運行結果:
回顧一下到目前為止,學過的python的數據類型及定義:
int1 = 3 print("int1 = ", int1, type(int1)) flt1 = 1.0 print("flt1 = ", flt1, type(flt1)) str1 = 'sdf' print("str1 = ", str1, type(str1)) bool1 = True print("bool1 = ", bool1, type(bool1)) lst1 = [1, 2, 'a', 'b', [1, 2, 'a', 'b']] print("lst1 = ", lst1, type(lst1)) tup1 = (1, 2, 'a', 'b', [1, 2, 'a', 'b']) print("tup1 = ", tup1, type(tup1)) dict1 = {1: 'a',2: 'b',3: 'c',4: 'd' } print("dict1 = ", dict1, type(dict1)) set1 = {1, 2, 'a', (3, 4, 'b')} print("set1 = ", set1, type(set1))運行結果:
因為set的特性,所有set嵌套時,只能嵌套不可變類型,但是我這里還是有個疑問,為什么能嵌套元組,而不能嵌套set呢?
經過網友們的解答,明白了其中原因,因為我代碼中的元組的元素都是不可變的,所以這個元組的地址是固定的,假如我的這個元組里面增加了一個list,那這個元組就不是hashable的。
所以集合和元組還是蠻相似的,不過呢,集合能夠自動去重。
通過代碼,能看得出來這個集合的元素是重復的,我們看看運行結果呢?
重復的元素被自動清除了。
集合的使用
集合常用方法
set3 = {2, 3, 's', 'd', 'f', 6} print("set3 = ", set3, type(set3)) set3.add(5) print("set3 = ", set3, type(set3)) set3.remove(5) print("set3 = ", set3, type(set3)) set3.add(4) set3.add(4) print("set3 = ", set3, type(set3)) str2 = 'sadfadfa' set4 = set(str2) print("set4 = ", set4, type(set4)) print('set3 & set4 = ', set3 & set4) print('set3 | set4 = ', set3 | set4) print('set3 ^ set4 = ', set3 ^ set4) print('set3 - set4 = ', set3 - set4) print('set4 - set3 = ', set4 - set3)運行結果:
其中用到了remove,其實這個方法不太友好,如果移除不存在的元素,會報錯。所以要配合使用場景來決定是使用remove,還是discard。如果需要刪除不存在元素報錯,那就用remove。如果需要刪除不存在元素,不報錯,那就使用discard。
運行結果:
使用discard不會報錯,成功運行。
pop函數,隨機彈出一個元素;
clear函數,清空set;
判斷元素是否在集合中存在,2 in set3;
集合的基本操作都囊括了,本文到此也結束了。
總結
以上是生活随笔為你收集整理的python学习-集合(创建、add、remove、discard、与、或、去同、存异)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eprime怎么调分辨率
- 下一篇: 他们用 ChatGPT 方式搞自动驾驶,