網站首頁 編程語言 正文
在python3中按數據類型的可變與不可變大致分為如下幾種類型:
- 不可變數據(3個):
Number
(數字)、String
(字符串)、Tuple
(元組); - 可變數據(3個):
List
(列表)、Dictionary
(字典)、Set
(集合)。
1.集合的特點
1.無序不重復沒有重復的元素,且元素無序存放(故集合沒有下標和切片),set的只要作用就是用來給數據去重。
2.使用時為?{ },與字典區分:當花括號里的元素不是鍵值對的時候為集合。
3.集合的底層其實是通過字典來封裝的
2.set的建立
可以使用大括號 { }?或者?set()?函數創建集合,但是注意如果創建一個空集合必須用 set()?而不是 { },因為{}是用來表示空字典類型的。
1.用set()函數創建set集合
person2 = set(("hello","jerry",133,11,133,"jerru")) #只能傳入一個參數,可以是list,tuple等 類型 print(len(person2)) print(person2) ''' 5 {133, 'jerry', 11, 'jerru', 'hello'} '''
2.add()
a=set() a.add("a") a.add("b") print(a)
3.用{}創建set集合。空set集合用set()函數表示,不可a={}。
person ={"student","teacher","babe",123,321,123} #同樣各種類型嵌套,可以賦值重復數據,但是存儲會去重 print(len(person)) #存放了6個數據,長度顯示是5,存儲是自動去重 print(person) #但是顯示出來則是去重的 ''' 5 {321, 'teacher', 'student', 'babe', 123} ''' #空set集合用set()函數表示 person1 = set() #表示空set,不能用person1={} print(len(person1)) print(person1) ''' 0 set() '''
4.set集合的轉化
a=["awe","weg","dawqgg"] c=set(a) print(c) b="chenshuagege" d=set(b) print(d) al=("233","34455") aw=set(al) print(al)
3.常見使用注意事項
#set對字符串也會去重,因為字符串屬于序列。 str1 = set("abcdefgabcdefghi") str2 = set("abcdefgabcdefgh") print(str1,str2) print(str1 - str2) #-號可以求差集 print(str2 - str1) #空值 #print(str1 + str2) #set里不能使用+號 ==================================================================== {'d', 'i', 'e', 'f', 'a', 'g', 'b', 'h', 'c'} {'d', 'e', 'f', 'a', 'g', 'b', 'h', 'c'} {'i'} set()
4.set的常用方法
4.1 set集合的增刪改查操作
- add 用于加入元素
- update 用于集合的合并
- remove 當移除一個集合里沒有的元素時,報錯
- discard 當移除一個集合里沒有的元素時,不會報錯
- del 僅可對集合本身使用,不可用于元素,因為元素在集合里為混亂排放,無下標
- clear 清空集合,留下空集合
- pop 隨機刪除集合里的一個元素
#1.給set集合增加數據 person ={"student","teacher","babe",123,321,123} person.add("student") #如果元素已經存在,則不報錯,也不會添加,不會將字符串拆分成多個元素,區別update print(person) person.add((1,23,"hello")) #可以添加元組,但不能是list print(person) ''' {321, 'babe', 'teacher', 'student', 123} {(1, 23, 'hello'), 321, 'babe', 'teacher', 'student', 123} ''' # update用于集合的合并,可以把多個集合添加到一個集合里面。可以iterar的數據都可以添加成set集合 person.update("abc")#使用update不能添加字符串,會拆分 print(person) #會將字符串拆分成a,b,c三個元素 ''' {321, 1, 3, 'b', 'c', 'teacher', (1, 23, 'hello'), 'a', 'babe', 'student', 123} ''' set1 = set() set1.add('武動乾坤') set2 = {'jsy', '稻香', '愛的代價', '大碗寬面'} set2.update(set1) print(set2) ''' {'大碗寬面', 'jsy', '愛的代價', '稻香', '武動乾坤'} ''' #2.從set里刪除數據 person.remove("student")#按元素去刪除 print(person) #print("student")如果不存在 ,會報錯。 ''' {321, 1, 3, 'c', 'b', (1, 23, 'hello'), 'teacher', 'babe', 'a', 123} ''' person.discard("student")#功能和remove一樣,好處是沒有的話,不會報錯 ret = person.pop() #在list里默認刪除最后一個,在set里隨機刪除一個。 print(person) print(ret) #pop()返回的是被刪除掉的那一項 ''' {1, 3, (1, 23, 'hello'), 'teacher', 'b', 'a', 'babe', 123, 'c'} ''' #3.更新set中某個元素,因為是無序的,所以不能用角標 #所以一般更新都是使用remove,然后在add #4.查詢是否存在,無法返回索引,使用in判斷 if "teacher" in person: print("true") else: print("不存在") ''' true ''' #5.終極大招:直接清空set print(person) person.clear() print(person) ''' set() '''
4.2 其它用法
交 并 差集操作交集 intersection;并集 union;差集 difference
可用運算符表示交集,并集,差集交集 & 并集 | 差集 -
#取兩者的交集 b={1,23} a={23,5} ret=b.intersection(a) print(ret) #取兩者的交集,intersection_update會改變b的內容 b={1,23} a={23,5} b.intersection_update(a) print(b) #union是把兩個set集合合起來 a={"a","b","c"} b={"a","wa"} wt=a.union(b) print(wt) #difference表示的意思是a中的內容b是沒有的,但是這個不會修改a自身的值,而是付給ret了 a={"12","14","234"} b={"12","23"} ret=a.difference(b) print(ret) #difference_update表示的意思是a中的內容b是沒有的,執行完,會修改a的內容 a={"12","14","234"} b={"12","23"} a.difference_update(b) print(a) #symmetric_difference為把兩個set集合里相同的內容當作邊然后取這邊兩邊的內容 a={"a","b","c"} b={"a","wa"} ret=a.symmetric_difference(b) print(ret) a.symmetric_difference(b) print(a) #可用運算符表示交集,并集,差集 set2 = {1, 2, 3, 4, 5} set3 = {3, 4, 5, 6, 7, 8, 9} print(set2 & set3) # 交集符號 & print(set2 | set3) # 并集符號 | print(set2 - set3) # 差集符號 - b={1,23} a={23,5} #如果a與b有集合的話,就返回false;如果沒有集合的話,就返回true ret=b.isdisjoint(a) print(ret) b={1,23,5} a={23,5} #issuperset說明b是否是a的父親,如果是就輸出true,如果不是輸出false ret=b.issuperset(a) print(ret) b={1,23,5} a={23,5} #b是否是a的子,如果是就輸出true,如果不是就輸出false ret=b.issubset(a) print(ret)
5.列表,元組,字典,集合?
-
list
: 允許重復,有序,有下標,可切片 -
tuple
: 允許重復,里面元素不能進行增刪改,只能查看 -
dict
: 字典里的元素以鍵值對的形式存在 鍵:唯一性 值:可以重復 -
set
: 元素不允許重復,且具有無序性
5.1 它們之間的類型轉換
1.列表,元組,集合,此三者均可相互轉
list----->tuple,set 列表轉集合時,注意不能有重復元素,否則長度改變
tuple----->list,set
set----->list,tuple
2.當字典參與的轉換時,需特殊對待
dict----->list,tuple 僅能將字典的鍵轉換,不能將值轉換
list----->dict 列表內必須是列表或是元組,且其中只有兩個元素時,可轉
list = [['a', {1}], ('', 2), ('c', 3)] print(dict(list))
輸出:
{‘a’: {1}, ‘’: 2, ‘c’: 3}
5.2 集合和列表方法上的區別
正是由于集合的無序性,沒有下標,故在方法上與列表有些差異。
- append(添加元素) extend(實現列表的拼接)
- insert(在某一下標插入元素) ----->listadd(添加元素) update(兩個集合的合并) ---->set
總結
原文鏈接:https://blog.csdn.net/weixin_43570470/article/details/123545197
相關推薦
- 2022-09-18 C#?中的partial?關鍵字詳解_C#教程
- 2023-10-09 git stash
- 2022-09-24 Go?select使用與底層原理講解_Golang
- 2022-11-03 Python?文檔解析lxml庫的使用詳解_python
- 2022-04-24 C++的靜態成員變量和靜態成員函數你了解多少_C 語言
- 2022-06-12 C#泛型接口的協變和逆變_C#教程
- 2022-09-28 SQLServer常見數學函數梳理總結_MsSql
- 2022-04-16 統計C語言二叉樹中葉子結點個數_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支