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

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