列表表达式,生成器表达式,

列表表达式

#普通代码
result=[]
for i in [1,2,3]
    result.append[i*i]
print(result)

#列表表达式
print([i*i for i in [1,2,3]])

生成器表达式:

  把列表解析的[]换成()得到的就是生成器表达式;列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存

laomuji=('鸡蛋%s' %i for i in range(10))        #生成器表达式
print(laomuji)                                 #返回生成器地址<generator object <genexpr> at 0x000001E17AF23BA0>
print(next(laomuji))                           #输出结果为:鸡蛋0
print(laomuji.__next__())                      #输出结果为:鸡蛋1
print(next(laomuji))                           #输出结果为:鸡蛋2
                                               #next(laomuji)等价于laomuji.__next__()

列表表达式与生成器表达式之间互转:


print([i/2 for i in range(100)])  # 列表表达式
list = (i/2 for i in range(100))  # 生成器表达式
print(list.__next__())

print([i*i for i in range(30) if i % 3 is 0])
list = (i*i for i in range(30) if i % 3 is 0)
print(list.__next__())


 
原文地址:https://www.cnblogs.com/jassin-du/p/7828851.html