python列表生成式與列表生成器

2021-08-15 05:14:04 字數 2275 閱讀 9317

列表生成式:會將所有的結果全部計算出來,把結果存放到記憶體中,如果列表中資料比較多,就會占用過多的記憶體空間,可能會導致memoryerror記憶體錯誤或者導致程式在執行時出現卡頓的情況

列表生成器:會建立乙個列表生成器物件,不會一次性的把所有結果都計算出來,如果需要獲取資料,可以使用next()函式來獲取,但是需要注意,一旦next()函式獲取不到資料,會導致出現stopiteration異常錯誤,可以使用for迴圈遍歷列表生成器,獲取所有資料

需要視情況而定,如果資料量比較大,推薦使用生成器

python2.7中就是range(生成式) 和 xrange(生成器)的區別

列表生成式是快速生成乙個列表的一些公式

在列表中存放0~100的數:

普通的列表生成:

numbers=

for x in range(0,101):

print(numbers)

用列表生成式生成列表:[要放入列表的資料    簡單的表示式1   表示式2]

#x for x in range(0,101) for迴圈遍歷出來的值,放入列表中

numbers=[x for x in range(0,101)]

print(numbers)

列表中存放0~100的偶數:

普通方法生成列表:

for x in range(0,101):

if x%2==0:

print(numbers)

用列表生成式生成列表:

#for迴圈遍歷0~101的數字,如果數字對2取餘==0,表示是偶數,x放在列表中

numbers=[x for x in range(0,101)if x%2==0]

print(numbers)

找出列表list1=['asd','adf','dafg','acbo']帶有a的字元

普通寫法:

rs_list=

for s in list1:

if 'a' in s:

print(rs_list)

列表生成式:

list2=[x for x in list1 if 'a' in  x]
列表生成式支援雙層for迴圈

list3=[x*y for x in range(0,10) for y in range(20)]

print(list3)

列表生成式和列表生成器的區別

列表生成式:

#列表生成式   直接把10000個數字建立好,放在列表中

list5=[x for x in range(10000)]

print(list5)

列表生成器:

#generator 列表生成器,生成乙個物件,不會把資料直接建立出來,當for迴圈遍歷的時候,生成器物件會呼叫next()函式,獲取下乙個要生成的資料

list6=(x for x in range(10))

print(list6)

#生成器物件可以呼叫next()函式獲取下乙個要生成的數字,如果next()函式沒有獲取到下乙個資料,會丟擲異常 stopiteration,程式出錯

#生成器物件可以使用for迴圈遍歷,實現next()函式的功能,不停地獲取下乙個資料,如果沒有下乙個資料迴圈結束

#next()在python2中執行generator.next(),在python3中是私有函式執行generator.__next__()

# print(list6.__next__())

# print(list6.__next__())

# print(list6.__next__())

# print(list6.__next__())

for x in list6:

print(x)

在pytnon2中執行以下**:

a=list(xrange(3))

b=range(3)

print(a)

print(b)

執行結果

[0, 1, 2]

[0, 1, 2]

說明xrange執行出是乙個物件,需用list轉換為列表;range執行出直接是乙個列表

個人筆記 Python 列表與列表生成式

在python語言中,所謂的列表生成式,就是說可以生成list列表的表示式,是python內建的一種強大的功能。1.1 python 列表 list python裡面 表示乙個列表 列表是最常用的python資料型別 建立乙個列表,只要把逗號分隔的不同的資料項使用方括號括起來即可。如下所示 list...

Python 列表生成式

列表生成式即list comprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式。舉個例子,要生成list 1,2,3,4,5,6,7,8,9,10 可以用list range 1,11 list range 1,11 1,2,3,4,5,6,7,8,9,10 但...

python列表生成式

全都是重點!列表生成式即listcomprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式。舉個例子,要生成list 1,2,3,4,5,6,7,8,9,10 可以用range 1,11 range 1,11 1,2,3,4,5,6,7,8,9,10 但如果要生成...