1樓:匿名使用者
列表生成式語法:
[x*x for x in range(0,10)] //列表生成式,這裡是中括號
//結果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
(x*x for x in range(0,10)) //生成器, 這裡是小括號
//結果 at 0x7f0b072e6140>
二者的區別很明顯:
一個直接返回了表示式的結果列表, 而另一個是一個物件,該物件包含了對表示式結果的計算引用, 通過迴圈可以直接輸出
g = (x*x for x in range(0,10))
for n in g:
print n結果0
14916
2536
4964
81當表示式的結果數量較少的時候, 使用列表生成式還好, 一旦數量級過大, 那麼列表生成式就會佔用很大的記憶體,
而生成器並不是立即把結果寫入記憶體, 而是儲存的一種計算方式, 通過不斷的獲取, 可以獲取到相應的位置的值,所以佔用的記憶體僅僅是對計算物件的儲存
2樓:匿名使用者
列表生成器生產一個列表
生成器和列表類似但是隻能遍歷一次
[x for x in range(10)],列表生產器,生成列表(x for x in range(10)),生成器,可以用for...in...遍歷,但是隻能遍歷一次
比如a = (x for x in range(10))for i in a:
....
如果再次for i in a則會報錯
關於python列表推導式和生成器推導式的問題。
3樓:可靠的我心我在
#! usr/bin/python
# -*- coding:utf-8 -*-#python 2.7
#列表推導式
even_numbers = [x for x in range(100,200) if sum(map(lambda y:int(y)**3,str(x))) == x]
print even_numbers
#生成器推導式
even_numbers = (x for x in range(100,200) if sum(map(lambda y:int(y)**3,str(x))) == x)
print even_numbers
print list(even_numbers)
關於python列表生成的一個問題
python怎樣生成隨機矩陣,python怎樣生成一個隨機矩陣
from numpy import random randarray random.random size 2,4 輸出 array 0.93848018,0.42005976,0.81470729,0.98797783 0.12242703,0.42756378,0.59705163,0.3661...
python中怎麼隨機生成驗證碼
usr bin env pythonimport random for i in range 6 print random.randint 0,9 得到隨機的6位數字驗證碼 第二種,得到隨機的6位數字 字元組合的驗證碼,這裡輸出格式可能有點不對,我就不做修改了。usr bin env pythoni...
python中如何生成全是0和1的矩陣
甲骨文蜒怪 溢位測試時,常常需要生成一長串字串去填充緩衝區,用迴圈的話比較麻煩。python中直接可以用乘號來操作字串 shellcode x90 1000執行後,shellcode的值為1000個 x90。同時也可以用加號來操作字串,連線兩個字串的例子如下 import struct buffer...