元組:
一組有序數(shù)據(jù)的組合。元組不可以修改。
元組的定義:
-
空元組:
- 變量 = () 或者 變量= tuple()
-
單個(gè)元素的元組
變量 = (值,) -
具有多個(gè)數(shù)據(jù)的元組
-
變量 = (值,值…) 或者 變量 = tuple(容器數(shù)據(jù))
基本操作:
-
變量 = (值,值…) 或者 變量 = tuple(容器數(shù)據(jù))
只可以使用索引訪問(wèn)元組,不可以進(jìn)行其他操作。
tuple1=(“你”,“我”,“他”,(“你得”,“我的”))
print(tuple1[3][1])
分片: 操作和列表一致。
tuple1=(“你”,“我”,“他”,(“你得”,“我的”))
print(tuple1[0:2:2])
常用函數(shù)
max() 獲取元組中的最大值
min() 獲取元組中的最小值
len() 獲取元組的長(zhǎng)度
tuple() 創(chuàng)建元組或者將其他數(shù)據(jù)轉(zhuǎn)化為元組
元組的遍歷: 同列表一樣,嵌套元組和嵌套列表也一致
tuple1=(“你”,“我”,“他”,(“你得”,“我的”))
for name in tuple1:
for i in name:
print(i)
元組推導(dǎo)式:
元組推導(dǎo)式的結(jié)果不是元組,而是生成器(生成器需要操作才會(huì)得到結(jié)果)
語(yǔ)法同列表推導(dǎo)式一樣
基本推導(dǎo)式: 結(jié)果變量 = (變量 for 變量 in 元組)
from collections import Iterator
res=(i*i for i in range(6))
print(res,type(res))
print(isinstance(res,Iterator))
print(next(res))
print(next(res))
print(next(res))
print(next(res))
for i in res:
print(i)
print(tuple(res))
元組除了不能修改和刪除,其他的和列表相關(guān)操作一模一樣,
元組函數(shù)可以使用 index 和 count,只能是元組相關(guān)的獲取操作
比如更改,刪除,排序,翻轉(zhuǎn),清空都不可以
tuple=(1,2,3,4,5)
res=tuple.index(2)
print(res)
tuple=(1,2,3,4,5,2,2)
res=tuple.count(2)
print(res)
元組推導(dǎo)式是生成器(generator)
定義:生成器是特殊的迭代器,可以自定義.按照某種算法推算下一個(gè)數(shù)據(jù),只需往內(nèi)存里存一個(gè)生成器,節(jié)省空間
語(yǔ)法:(1)里面是推導(dǎo)式,外面是()的是生成器
(2)含有yield關(guān)鍵字的函數(shù)是生成器函數(shù),它可以返回一個(gè)迭代器,換句話(huà)說(shuō),生成器是一個(gè)返回迭代器的函數(shù)。
def func():
yield 1
print(“一次”)
yield 2
print(“二次”)
yield 3
print(“三次”)
res=func()
print(next(res))
print(next(res))
print(next(res))
for i in res:
print(i)
print(tuple(res))
yield 有點(diǎn)像 return
共同點(diǎn)在于:執(zhí)行到這句話(huà)會(huì)把值返回出去
不同點(diǎn)在于:再次執(zhí)行生成器時(shí)會(huì)從上一次yield執(zhí)行的位置繼續(xù)向下走,它會(huì)記住上一次離開(kāi)時(shí)的狀態(tài).
每次返回,都會(huì)記住當(dāng)前代碼執(zhí)行的位置,再次調(diào)用的時(shí)候會(huì)從上次位置繼續(xù)向下執(zhí)行
集合
確定的一組無(wú)序數(shù)據(jù)的組合。
特征:
1.由多個(gè)數(shù)據(jù)組成的復(fù)合型數(shù)據(jù)(容器類(lèi)數(shù)據(jù)) 2.集合是沒(méi)有順序的
集合的操作:
1.創(chuàng)建集合
空集合 變量 = set()
具有多個(gè)數(shù)據(jù)的集合 變量 = {數(shù)據(jù),數(shù)據(jù),數(shù)據(jù)…}
1.集合創(chuàng)建時(shí)如果存在相同的數(shù)據(jù),集合會(huì)只保留一份。
2.集合可以存放的數(shù)據(jù)類(lèi)型有Number,String,Tuple,冰凍集合類(lèi)型
集合沒(méi)有添加,獲取,刪除及修改的【基本操作】!
集合的序列操作:由于集合數(shù)據(jù)比較特殊,集合操作非常少
成員檢測(cè)
in
數(shù)據(jù) in 集合
not in
數(shù)據(jù) not in 集合
集合的序列函數(shù):
len() 檢測(cè)容器的長(zhǎng)度
max() 獲取容器中的最大值
min() 獲取容器中的最小值
set() 創(chuàng)建空集合或者將其他數(shù)據(jù)類(lèi)型轉(zhuǎn)換為集合
集合的遍歷操作: 只能使用for…in 來(lái)遍歷集合
set={1,2,4,5,6,8,10}
for i in set:
print(i)
集合的推導(dǎo)式/集合內(nèi)涵:
普通的集合推導(dǎo)式: 變量 = {變量 for 變量 in 集合}
res={i
2 for i in {1,2,3,4}}
print(res)
帶有判斷條件的集合推導(dǎo)式
變量 = {變量 for 變量 in 集合 if 條件表達(dá)式}
res={i
2 for i in {1,2,3,4,5,9,10} if i%2==0}
print(res)
多循環(huán)的集合推導(dǎo)式:
變量 = {變量1和變量2的操作 for 變量1 in 容器 for 變量2 in 容器}
res={i*j for i in range(1,5) for j in range(2,3)}
print(res)
帶有判斷條件的多循環(huán)推導(dǎo)式:
變量 = {變量1和變量2的操作 for 變量1 in 容器 for 變量2 in 容器 if 條件表達(dá)式}
集合專(zhuān)用的函數(shù):
add() 向集合中添加一個(gè)元素/數(shù)據(jù)
格式:集合.add(數(shù)據(jù))
返回值:None
注意:操作直接修改原有集合。
set1={1,2,3,4,5,6}
set1.add(7)
print(set1)
pop() 隨機(jī)刪除集合中的一個(gè)元素/數(shù)據(jù)
格式:集合.pop()
返回值:隨機(jī)刪除的數(shù)據(jù)
注意:操作直接修改原有集合。
set1={1,2,3,4,5,6}
set1.pop()
print(set1)
remove() 刪除指定的數(shù)據(jù),數(shù)據(jù)不存在會(huì)報(bào)錯(cuò)
格式:集合.remove(數(shù)據(jù))
返回值:None
注意:操作直接修改原有集合。
set1={1,2,3,4,5,6}
set1.remove(1)
print(set1)
discard() 刪除指定的數(shù)據(jù),數(shù)據(jù)不存在不進(jìn)行操作
格式:集合.discard(數(shù)據(jù))
返回值:None
注意:操作直接修改原有集合。
set1={1,2,3,4,5,6}
set1.discard(1)
print(set1)
clear() 清空集合
格式:集合.clear()
返回值:None
注意:操作直接修改原有集合。
set1={1,2,3,4,5,6}
set1.clear()
print(set1)
copy() 復(fù)制集合
格式:集合.copy()
返回值:None
注意:復(fù)制的集合和原集合內(nèi)容一樣,但是不是一個(gè)集合
set1={1,2,3,4,5,6}
set2=set1.copy()
set1.add(7)
print(set1)
print(set2)
#集合運(yùn)算符:
& 交集
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set1&set2
print(res)
| 并集
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set1|set2
print(res)
- 差集
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set1-set2
print(res)
^ 對(duì)稱(chēng)差集
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set1^set2
print(res)
#集合運(yùn)算函數(shù):
差集:difference() *
格式:集合1.difference(集合2)
返回值:差集的集合
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.difference(set1)
print(res)
更新差集:difference_update()
格式:集合1.difference_update(集合2)
返回值:None
注意:所謂更新差集,就是計(jì)算差集之后將結(jié)果重新賦值給第一個(gè)集合的變量而已
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
set2.difference_update(set1)
print(set2)
交集:intersection()
格式:集合1.intersection(集合2)
返回值:交集的集合
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.intersection(set1)
print(res)
更新交集:intersection_update()
格式:集合1.intersection_update(集合2)
返回值:None
注意:更新交集,就是計(jì)算交集之后將結(jié)果重新賦值給第一個(gè)集合的變量
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
set2.intersection_update(set1)
print(set2)
并集:union()
格式:集合1.union(集合2)
返回值:并集結(jié)果
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.union(set1)
print(res)
更新并集:update()
格式:集合1.update(集合2)
返回值:None
注意:更新并集,就是計(jì)算并集之后將結(jié)果重新賦值給第一個(gè)集合的變量
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
set2.update(set1)
print(set2)
對(duì)稱(chēng)差集:symmetric_difference()
格式:集合1.symmetric_difference(集合2)
返回值:對(duì)稱(chēng)差集的集合
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.symmetric_difference(set1)
print(res)
更新對(duì)稱(chēng)差集運(yùn)算:symmetric_difference_update()
格式:集合1.symmetric_difference_update(集合2)
返回值:None
注意:計(jì)算對(duì)稱(chēng)差集的結(jié)果直接更新到集合1的變量當(dāng)中
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
set2.symmetric_difference_update(set1)
print(set2)
檢測(cè)是否是超集:issuperset()
格式:集合1.issuperset(集合2)
返回值:布爾值
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.issuperset(set1)
print(res)
檢測(cè)是否是子集:issubset()
格式:集合1.issubset(集合2)
返回值:布爾值
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.issubset(set1)
print(res)
檢測(cè)是否不相交的函數(shù): isdisjoint()
格式:集合1.isdisjoint(集合2)
返回值:布爾值
注意:集合不相交結(jié)果為T(mén)rue,集合相交,結(jié)果為False
set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.isdijoint(set1)
print(res)
冰凍集合/固定集合:一旦創(chuàng)建就不可以進(jìn)行修改的集合。一種數(shù)據(jù)類(lèi)型。
如果把集合比作列表,冰凍集合就是元組。
#創(chuàng)建冰凍集合
空的冰凍集合:
變量 = frozenset()
創(chuàng)建具有數(shù)據(jù)的冰凍集合
變量 = frozenset(容器數(shù)據(jù))
冰凍集合的作用:
為集合的操作提供一個(gè)不可以改變的對(duì)照集合。
冰凍集合除了不能修改之外,其余和集合一樣!
copy() 可以使用
difference() 差集 可以使用
difference_update() 更新差集 不可以使用
intersection() 交集 可以使用
intersection_update()更新交集 不可以使用
union() 并集 可以使用
update()更新并集 不可以使用
issuperset() 檢測(cè)超集 可以使用
issubset() 檢測(cè)子集 可以使用
isdisjoint() 檢測(cè)是否不相交 可以使用
symmetric_difference()可以使用(對(duì)稱(chēng)差集)
symmetric_difference_update()不可以使用(更新對(duì)稱(chēng)差集)
list1 = [“小王”,“小八”,“小霸王”,“小鳥(niǎo)”]
set1 = frozenset(list1)
set2 = frozenset((“小霸王”,“孫策”,“霸王”,“項(xiàng)羽”))
res = set1.intersection(set2)
print(res)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
