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 osg=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
(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
(res)
1314
1516 [, , , , ]
模擬資料庫的查詢
1##列表形式
2 with open('
b.txt
') as f:
3 res=[line.split() for line inf]4
(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
(res)
13 dic_g=( for i in
res)
14print
(dic_g)
16print
(next(dic_g))
17count'])
1819
20at 0x0000000000b20e60>
21at 0x0000000000b20f68>
22 23 3
過濾查詢
#取出單價》10000with 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,看著高大上.缺點 不好排錯.整體 凡是用列表推導式構造的列表物件,用其他方式都可構建...