python基礎 列表生成式 生成器表示式

2021-08-31 07:40:05 字數 2943 閱讀 4078

結論:

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之間的所...