python生成器應用之字典生成

2021-09-27 08:43:11 字數 1692 閱讀 4444

python 生成器,這裡是指包含 yield關鍵字的函式,區別於類似表示式的那種情況,例如:

generator = (x*5+6 for x in range(20))
本文主要** 生成器函式(如下**)在字典生成的應用。

def counts(n):

i=0while i < n:

yield i

i +=1

生成字典的函式,需要的必要引數:

1、組成字典的元素,可以自定義,例如乙個字元(數字1-9,字母a-za-z,符號@#$%^*&等)或者乙個字元組合。

2、單一 一條字典資料中,包含的元素的個數,可以指定個數,1-n的數字,只要硬碟容量足夠,可以任意長度。

組合結果由元素個數決定(元素個數的指數n**n,例如3個元素產生3 ** 3=27條資料),而不是字元個數。

首先定義字典元素:

ele = list('abcdefg123456*#@')
或者通過自定義檔案(檔名 dicts.txt,每個元素佔一行)載入:

with open('dicts.txt') as f:

ele = f.readlines()

然後設定 字典單條資料中包含元素的個數:

n=5
或者在命令列輸入:

import sys

n=int(sys.ar**[1])

下面看重點的生成器函式:

def t1(n, ele):

a, c = ele, ele

for x in range(n):

yield iter(a)

c = (i+j for i in ele for j in a)

a = list(c)

函式中使用了生成器表示式(i+j for i in ele for j in c),它實現了類似下面的迴圈巢狀:

for i in list1:

for j in list2:

...

理論上,可以進行無限迴圈巢狀。

在呼叫上面的生成器函式時,返回的(除第一次外)也是生成器,分別對應的是選擇所有元素中的2個、3個、4個 … n個元素時產生的字典生成器,可以根據需要選擇 所有元素長度的的字典,或是 某乙個元素長度的字典,下面例項呼叫的是最後乙個生成器,即元素個數為n時生成的字典。

def main(n=5):

tmp = t1(n, ele)

x2=for i in tmp:

x2 = i

print(type(x2))

#for j in x2:

#print(j)

with open('results.txt','w') as f:

for i in x2:

f.write('{}\n'.format(i))

上面的變數 x2 即為 函式輸出的最後乙個生成器,如果 n=5,x2是由5個元素組成的字典生成器,字典最後儲存在results.txt檔案中。

通過python的生成器函式,可以輸出 長度 和 組成元素 可 任意指定的字典,在 對登入頁面 和 加密檔案 爆破時,可以方便使用。

python3生成器 Python3 生成器

python3 生成器 閱讀 125 發布於 2020 05 19 14 29 25 在python中,一邊迴圈一邊計算出元素的機制,稱為生成器 generator。生成器的優點 一次返回乙個結果,延遲計算。這對於大資料量處理,是個非常有用的優勢。占用記憶體量是工程師必須考慮的乙個問題。提高 可讀性...

Python(九)生成器

該系列文章用來記錄一下自己在b站學習python時,進行上機練習用的 使用 pycharm 2020.3.3 慕課 python語言基礎與應用 北京大學 陳斌 字幕校對 編寫程式,輸入兩個數,輸出它們的商,採用例外處理來處理兩種錯誤,給出使用者友好的提示資訊 1 除數為0 2 輸入了非數值 try ...

Python筆記003 生成器和生成器表示式

以下是我學習 流暢的python 後的個人筆記,現在拿出來和大家共享,希望能幫到各位python學習者。生成器使用yield做關鍵字,一次只返回乙個值給呼叫者,然後暫停執行,其作用是 節省記憶體空間。生成器可以用next 函式,也可以用for迭代的方式獲取元素值,中間還可以用close 來隨時終止生...