一.列表生成式
egg_list=[] # for i in range(100): # egg_list.append('egg%s' %i) # 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)
l1.append(t)
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]: # file_path_list.append('%s\%s' %(i[0],j)) # # 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)) <generator object <genexpr> at 0x0000000000690E60> egg0 egg1
f=open('a.txt') ##过于占用内存 l=[] for line in f: line=line.strip() l.append(line) 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: 3 for line in f: 4 goods=line.split() 5 res=float(goods[-1])*float(goods[-2]) 6 money_l.append(res) 7 print(money_l) 8 9 10 11 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 apple 10 3 tesla 1000000 1 mac 3000 2 lenovo 30000 3 chicken 10 3
1 res = [] 2 with open('b.txt') as f: 3 for line in f: 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] 11 res.append(d) 12 print(res) 13 14 15 16 [{'name': 'apple', 'price': '10', 'count': '3'}, {'name': 'tesla', 'price': '1000000', 'count': '1'}, {'name': 'mac', 'price': '3000', 'count': '2'}, {'name': 'lenovo', 'price': '30000', 'count': '3'}, {'name': 'chicken', 'price': '10', 'count': '3'}]
模拟数据库的查询
1 ##列表形式 2 with open('b.txt') as f: 3 res=[line.split() for line in f] 4 print(res) 5 6 7 [['apple', '10', '3'], ['tesla', '1000000', '1'], ['mac', '3000', '2'], ['lenovo', '30000', '3'], ['chicken', '10', '3']] 8 9 ##生成器形式 10 with open('b.txt') as f: 11 res=(line.split() for line in f) 12 print(res) 13 dic_g=({'name':i[0],'price':i[1],'count':i[2]} for i in res) 14 print(dic_g) 15 apple_dic=next(dic_g) 16 print(next(dic_g)) 17 print(apple_dic['count']) 18 19 20 <generator object <genexpr> at 0x0000000000B20E60> 21 <generator object <genexpr> at 0x0000000000B20F68> 22 {'price': '1000000', 'name': 'tesla', 'count': '1'} 23 3
过滤查询
#取出单价>10000 with open('b.txt') as f: res=(line.split() for line in f) dic_g=({'name':i[0],'price':i[1],'count':i[2]} for i in res if float(i[1]) > 10000) print(dic_g) for i in dic_g: print(i) print(list(dic_g)) <generator object <genexpr> at 0x0000000000D10EB8> {'count': '1', 'name': 'tesla', 'price': '1000000'} {'count': '3', 'name': 'lenovo', 'price': '30000'} []