列表表达式
程序一:
常规写法:
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 > 0] #列表写法:[命令+循环语句]。'egg%s' %i 这句话在列表中,所以不用append命令写入列表中 print(l)
程序二:
常规写法:
l=[1,2,3,4]
s='hello'
l1=[]
for num in l:
for s1 in s:
t=(num,s1)
l1.append(t)
print(l1)
列表表达式写法:
l1=[(num,s1) for num in l if num > 0 for s1 in s] #if num >0 这句判断可以去掉 print(l1)
程序三:
常规写法:
import os
#查看xuyaping文件夹所有的绝对路径 g=os.walk('F:\\xuyaping') file_path_list=[] for i in g: # print(i) for j in i[-1]: file_path_list.append('%s\\%s' %(i[0],j)) print(file_path_list)
列表表达式写法:
g=os.walk('F:\\xuyaping')
l1=['%s\\%s' %(i[0],j) for i in g for j in i[-1]]
print(l1)
生成器表达式
相比列表表达式,只不过将[]换成了(),更加省内存。
程序一:
列表表达式写法:
l=['egg%s' %i for i in range(10000)] 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)
程序二:
常规写法:
f=open('a.txt')
l=[]
f.seek(0) #光标移动到文档首行首位
for line in f:
line=line.strip()
l.append(line)
print(l)
列表表达式写法:
f=open('a.txt')
f.seek(0)
l1=[line.strip() for line in f]
print(l1)
生成器表达式写法:
f=open('a.txt')
f.seek(0)
g=(line.strip() for line in f)
print(g)
print(next(g))
程序三:
生成器表达式写法:
f=open('a.txt')
g=(line.strip() for line in f) #g为迭代器
l=list(g) #list(可迭代对象),迭代取出g中的所有内容
print(l)
---->['asdfasdfasdfasdfasdf', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '123123123123', '', 'asdfasdfasdfasdf'] nums_g=(i for i in range(3)) # print(sum([1,2,3,4])) print(sum(nums_g)) #sum(可迭代对象),迭代将g中的所有元素相加
1 asdfasdfasdfasdfasdf 2 123123123123 3 123123123123 4 123123123123 5 123123123123 6 123123123123 7 123123123123 8 123123123123 9 123123123123 10 123123123123 11 123123123123 12 123123123123 13 123123123123 14 123123123123 15 123123123123 16 123123123123 17 123123123123 18 123123123123 19 123123123123 20 123123123123 21 123123123123 22 23 asdfasdfasdfasdf