資料型別 生成器

2022-05-17 03:22:25 字數 4785 閱讀 3094

資料型別

intstr

bool

list

uptul

dict

set可變的,也就是不可雜湊的資料型別

int bool uptul

type(型別)

input獲取到的都是字串

有下標的

dict uptal str

刪lst.pop(下標) 按下標刪除預設刪除最後乙個 del lst 刪除列表 del lst[下標] 可下標刪除 可切片刪除 lst.remove('元素')按元素刪除 lst.clear()清空列表

改lst='元素' 下標改和切片改 直接改 不用去接 不能用replice替換

查 for 迴圈查詢 按下標查詢

其它操作 len(lst) 查長度 lst.count()查元素的個數 lst.index(元素)查元素下標 數字型的列表 lst=[1,2,34,5,6] sort 公升序 sort(reverse=true) 降序 lst.reverse()直倒敘

lst=[1,2,35,56,21]

lst.sort()

print(lst) ---[1, 2, 21, 35, 56]

lst=[1,2,35,56,21]

lst.sort(reverse=(true))

print(lst)-----[56, 35, 21, 2, 1]

uptal 元組 操作 uptal=()

元組不可以增刪,不可變的資料型別 唯一的操作 就是可以檢視for迴圈去查 按下標檢視 裡邊的元素沒要求

dict 字典

dic={}

增 dic=元素 有就替換沒有就新增 dic.setdefault('鍵',值) 有就不做操作 ,沒有就新增

dict.update()

刪dic.pop(鍵) 按鍵刪除 預設刪除最後乙個 del dic 刪除字典 del dic[鍵]可以按鍵刪除 dic.clear)() 清空字典

改dic[鍵]=值 按鍵去改 沒有就是新增

dic2.update(dic1)

更新 被更新的內容如果在 要更新的內容中那值就會被覆蓋

兩個字典中,都沒有一樣的就是合併

print(dic2)

查 dic.get(鍵,值) 有就不做操作,輸出有的值 ,沒有的話就返回none 同樣的 可以把返回你定義的值作為鍵值對放在字典中

可以for迴圈去查

字典中:get和setdefault的 區別 字典裡有鍵時,都不操作.沒有的話,get返回一值而已不會新增,setdefault沒有的話,就會新增

# print(dic2.keys()) # 高仿列表 dict_keys(['33', '66']) 不能使用下標

# print(dic2.values()) # 高仿列表 dict_values(['gg', 'pp']) 不能使用下標

# keys() # 獲取所有的鍵 高仿列表

## values() # 獲取所有的值 高仿列表

## item() # 獲取鍵值 以元祖的形式顯示

集合set()

集合可以天然去重 {} 集合裡的資料型別 必須是不可變的 ,內容要求不可變資料

沒有下標

增set.add()

set.update

刪 clear pop remove

改 先刪後增

查 可以for迴圈

集合 set se = 天然去重 內容要求不可變資料

# 增:

# se.add('內容')

# se.update('可迭代物件')

# 改:

# 集合就是先刪後增

# 查:

# for 迴圈

檔案操作

r w a

r 唯讀 open('檔案',mode='r',encoding='編碼集')

如:f=open('a1.txt',mode='r',encoding='utf-8')

f.reade()

f.close

w 值寫

f=open('a1.txt',mode='w',encoding='utf-8')

f.write()

f.close

w 模式下先清空檔案裡的內容是讀不到的

a 直接在後邊寫

f= open('a1.txt',mode='a',encoding='utf-8')

f.write()

f.close

r+ w+ a+

r+ 先讀後寫

with open('檔案',r+,encoding='utf-8') as f:

f.reade()

f.write()

w+ 先寫後讀

with open('檔案',w+,encoding='utf-8') as f:

f.write()

f.reade()

a+ 寫 du

with open('檔案',a+,encoding='utf-8') as f:

f.write()

a+ 追加寫 讀

# 寫讀的時候是讀不到內容的,除非移動游標

f = open('t2',mode='a+',encoding='utf-8')

f.seek(0)

print(f.read())

f.write('哈哈哈')

seek()移動游標 tell() 檢視游標

# 最常用: r,w,a,r+,a+

with 模式下 是不用close 關閉的

非文子讀取 f = open('qq.jpg',mode='rb')

print(f.read())

# 推薦寫法 相對路徑

函式的初識

函式所謂的函式就是就是把**塊打包來用的

格式def 函式名():

函式體函式名() 呼叫函式

函式的返回值

不寫return返回的是乙個none

寫了return不給值 返回也是none

return 可以返回隨意資料 多個元素返回的都是元祖

return 可以終止這個函式

return值返回給了呼叫者

引數 :

函式的引數:

形參: 定義的時候 形參位置括號內區域性的

位置引數

預設引數

混合引數

實參: 呼叫的時候 實參是括號內的全域性

位置引數

關鍵字引數

混合引數

動態引數 有倆 動態位置引數 動態預設引數

**kwargs 定義的時候是聚合

*kwargs 使用的時候 打散字典的鍵

形參排序: 位置引數 > 動態位置引數 >預設引數》動態預設位置引數

函式的空間名稱: 內建空間 全域性空間 區域性空間

取值:區域性空間》全域性空間》內建空間

載入順序:內建空間》全域性空間》區域性

global 在區域性修改全域性的資料,如果全域性沒有的時候,在區域性修改的時候回建立乙個

nonlocal 在區域性裡,修改離它最近的上一級,上一級不存在就繼續往上找

globals() 檢視全域性作用域中的名字

locals() 檢視當前作用域中的名字

函式名:

函式名可以 當做值 去賦值給變數

函式名可以 當做引數傳遞給函式

函式名可以 當做函式返回值,注意:返回值不能加括號 接力的要一層一層往下傳,中間斷了就接不到了

函式名可以 當做元素存放乙個容器裡

檢視函式的記憶體位址 print(函式名)

閉包:巢狀函式;

簡單的說就是 f1下函式f2 用的變數是f1的值並且return f2

巢狀函式,內部函式使用外部變數(非全域性變數)就是閉包

好處,保護這個變數不被外界修改

生命週期延長

節省開闢空間和銷毀空間的時間差,提高效率

迭代器:可以迴圈檢視 滿足for 迴圈的 __inter__ 和__next__

迭代物件 __inter__ 或者可以被for迴圈的就是可迭代物件

可迭代物件

list

dict

settuple

str不可迭代:int bool

除了int bool 其它 str list set uptal dict 都可以迭代

生成器也是乙個迭代器:

yield

def func():

print()

a=yield k

print()

yield h

g=func()-----這就是乙個生成器

print(g.__next__())-----啟動生成器 乙個next 對應乙個yield

print(g.senk(內容) -----啟動生成器+給上乙個yield等號左邊乙個值

推導式 :

生成器推導式 g=(i for in in range(8))

列表生成器:list=[i for i in range(8)]

集合推導式:set= set= for 迴圈的字典的鍵值,就是裡邊是元組的(鍵,值),外邊是大括號

字典生成器:dic= 出現倆列表時為:lst1=[1,2,3,4] lst2=['a','b' ,'c','d'] dic=

dic =

print()

python 生成器作用 Python生成器

生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...

python生成器好處 Python生成器筆記

python中三大器有迭代器,生成器,裝飾器,本文主要講述生成器。主要從生成器的概念,本質,以及yield關鍵字的使用執行過程。本質 生成器是一類特殊的迭代器,使用了yield關鍵字的函式不再是函式,而是生成器。使用了yield的函式就是生成器 1.yield關鍵字有兩點作用 1.1 yield語句...

古文生成器python python(生成器)

生成器 先從列表生成式說起 可以通過簡單的式子,生成有規律的列表 如果把 換為 會發生什麼呢?看到 x 存的不再是列表,而是乙個位址,而這個位址就是我們的生成器物件的位址 這東西有什麼用呢?當然時,節省記憶體啦 假設現在有很龐大的一組資料要處理,貌似不可能把它一次性載入記憶體再進行處理,這時候就體現...