結論:
1.把列表解析的換成()得到的就是生成器表示式
2.列表解析與生成器表示式都是一種便利的程式設計方式,只不過生成器表示式更節省記憶體
3.python不但使用迭代器協議,讓for迴圈變得更加通用。大部分內建函式,也是使用迭代器協議訪問物件的。例如, sum函式是python的內建函式,該函式使用迭代器協議訪問物件,而生成器實現了迭代器協議,所以,我們可以直接這樣計算一系列值的和:
sum(x ** 2 for x in xrange(4))
而不用多此一舉的先構造乙個列表:
sum([x ** 2 for x in xrange(4)])
一、列表生成式
#三元表示式
name='alex'
name='egon'
res='sb' if name == 'alex' else 'shuai'
print(res)
#例子1
egg_list=
for i in range(100):
print(egg_list)
l=['egg%s' %i for i in range(100) if i > 50]
print(l)
#例子2
l=[1,2,3,4]
s='hello'
l1=[(num,s1) for num in l if num > 2 for s1 in s]
print(l1)
l1=for num in l:
for s1 in s:
t=(num,s1)
print(l1)
#例子3
import os
g=os.walk('c:\\egon')
file_path_list=
for i in g:
# print(i)
for j in i[-1]:
print(file_path_list)
g=os.walk('c:\\egon')
l1=['%s\\%s' %(i[0],j) for i in g for j in i[-1]]
print(l1)
二、生成器表示式
#例子1
l=['egg%s' %i for i in range(100)]
print(l)
g=l=('egg%s' %i for i in range(10000))
print(g)
print(next(g))
print(next(g))
for i in g:
print(i)
#例子2
f=open('a.txt')
l=for line in f:
line=line.strip()
print(l) #列印的結果是每行內容組成的列表。
f.seek(0)
l1=[line.strip() for line in f]
print(l1)
f.seek(0)
g=(line.strip() for line in f)
print(g) #列印的是例項的位址
print(next(g)) #使用next函式後,跳到列表第一項。
#例子3
f=open('a.txt')
g=(line.strip() for line in f)
l=list(g) #list() -> new empty list ; list(iterable) -> new list initialized from iterable's items
print(l)
nums_g=(i for i in range(3))
# print(sum([1,2,3,4]))
print(sum(nums_g))
#例子4
money_l=
with open('b.txt') as f:
for line in f:
goods=line.split() # split a pathname. returns tuple "(head, tail)" where "tail" is everything after the final slash. either part may be empty.
res=float(goods[-1])*float(goods[-2])
print(money_l)
f=open('b.txt')
g=(float(line.split()[-1])*float(line.split()[-2]) for line in f)
print(sum(g))
with open('b.txt') as f:
print(sum((float(line.split()[-1])*float(line.split()[-2]) for line in f)))
#例子5
res=
with open('b.txt') as f:
for line in f:
# print(line)
l=line.split()
# print(l)
d={}
d['name']=l[0]
d['price']=l[1]
d['count']=l[2]
print(res)
原文: 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基礎 列表生成式
對列表實現迭代in 1 l1 1,2,3,4,5 in 2 l2 in 3 for i in l1 in 4 print l2 1,4,9,16,25 使用列表生成式完成上面的操作in 5 l3 i 2 for i in l1 in 6 print l3 1,4,9,16,25 列表生成式可直接輸出...
python 列表生成式,字典生成式
生成乙個列表,列表元素分別為 1 1,2 2.9 9 import math li for i in range 1,10 print li print i i for i in range 1,10 print i i for i in range 1,10 if i 2 0 找出1 10之間的所...