列表生成式和生成器表示式

2022-08-02 19:12:20 字數 3661 閱讀 6022

egg_list=

# for i in range(100):

# print(egg_list)

l=[ 'egg%s' %i for i in range(100) if i >50]

print(l)

三元表示式:

name='alex'

name='linhaifeng'

res='sb' if name == 'alex' else 'shuai'

print(res)

列表生成式例子:

1.

l=[1,2,3,4]

s='hello'

l1=[(num,s1) for num in l if num > 2 for s1 in s]

print(l1)

[(3, 'h'), (3, 'e'), (3, 'l'), (3, 'l'), (3, 'o'), (4, 'h'), (4, 'e'), (4, 'l'), (4, 'l'), (4, 'o')]

相當於  

l1=

for num in l:

for s1 in s:

t=(num,s1)

print(l1)

2.

import os

g=os.walk('c:\\egon')

l1=['%s\\%s' %(i[0],j) for i in g for j in i[-1]]

print(l1)

#相當於

# g=os.walk('c:\\egon')

# file_path_list=

# for i in g:

# for j in i[-1]:

## print(file_path_list)

['c:\\egon\\egon.txt', 'c:\\egon\\egon1.txt', 'c:\\egon\\a\\a.txt', 'c:\\egon\\a\\a1\\a1.txt', 'c:\\egon\\a\\a1\\a2\\a2.txt', 'c:\\egon\\b\\b.txt']

g=l=('egg%s' %i for i in range(100))

print(g)

print(next(g))

print(next(g))

at 0x0000000000690e60>

egg0

egg1

f=open('a.txt')           ##過於占用記憶體

l=for line in f:

line=line.strip()

print(l)

#或者

l1=[line.strip() for line in f ] ##宣告式程式設計

print(l1)

['sfasdfasdf', '1234432', '343243', '324124', '3124124', '321441234']

表示式形式

1 money_l=

2 with open('

b.txt

') as f:

3for line in

f:4 goods=line.split()

5 res=float(goods[-1])*float(goods[-2])67

print

(money_l)89

1011

12 [30.0, 1000000.0, 6000.0, 90000.0, 30.0]

生成器形式

f=open('b.txt')

g=(float(line.split()[-1])*float(line.split()[-2]) for line in f)

print(sum(g))

#求和#b.txt

tesla 1000000 1

mac 3000 2

lenovo 30000 3

chicken 10 3

1 res =

2 with open('

b.txt

') as f:

3for line inf:4

#print(line)

5 l=line.split()6#

print(l)

7 d={}

8 d['

name

']=l[0]

9 d['

price

']=l[1]

10 d['

count

']=l[2]

1112

print

(res)

1314

1516 [, , , , ]

模擬資料庫的查詢

1

##列表形式

2 with open('

b.txt

') as f:

3 res=[line.split() for line inf]4

print

(res)56

7 [['

', '

10', '

3'], ['

tesla

', '

1000000

', '

1'], ['

mac', '

3000

', '

2'], ['

lenovo

', '

30000

', '

3'], ['

chicken

', '

10', '3'

]]89#

#生成器形式

10 with open('

b.txt

') as f:

11 res=(line.split() for line in

f)12

print

(res)

13 dic_g=( for i in

res)

14print

(dic_g)

16print

(next(dic_g))

17count'])

1819

20at 0x0000000000b20e60>

21at 0x0000000000b20f68>

22 23 3

過濾查詢

#取出單價》10000

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

res=(line.split() for line in f)

dic_g=( for i in res if float(i[1]) > 10000)

print(dic_g)

for i in dic_g:

print(i)

print(list(dic_g))

at 0x0000000000d10eb8>

列表生成式和生成器表示式

列表生成式和生成器表示式,體現了宣告式程式設計的思想,把一大堆 變成宣告式的方式 list,for,sum等都是把可迭代物件變為迭代器然後依次next 取值,還會處理異常 一 列表生成式 列表生成式即list comprehensions,是python內建的非常簡單卻強大的可以用來建立list的生...

列表推導式和生成器表示式

固定語法 i for i in a if 示例 獲取偶數 a 1,2,3,4 x for i in a if i 2 0 a x print a 2,4 使用列表推導式 a 1,2,3,4 a i for i in a if i 2 0 print a 2,4 列表推導式可以呼叫函式 a 1,2,3...

列表推導式,生成器表示式

生成器表示式,列表推導式 其他推導式 變數 加工後的變數 for 變數 in iterable 迴圈模式 變數 加工後的變數 for 變數 in iterable if 條件 篩選模式 優點 1,節省 一行搞定.2,看著高大上.缺點 不好排錯.整體 凡是用列表推導式構造的列表物件,用其他方式都可構建...