下面有两个表达式,对我来说基本上是相同的,但是第一行给出了一个内部生成器而不是值的列表,而第二行工作正常。
我只想知道为什么会发生什么是发电机及其使用方式。
newer_list.append([sum(i)] for i in new_list)
for i in new_list:
newer_list.append([sum(i)])
答案 0 :(得分:2)
第一个有一个生成器表达式(sum[i] for i in new_list)
,而第二个只是循环,添加总和。
你可能想要newer_list.extend([sum(i) for i in new_list])
之类的东西,其中extend连接列表而不是仅仅附加,整个事情都用括号括起来,所以它是一个列表理解而不是生成器。
答案 1 :(得分:1)
生成器是Python不能将所有内容存储在内存中的一种方式。表达式([sum(i)] for i in new_list)
是用于生成列表中的项的公式。为了防止将该列表存储在内存中,它只存储了执行所需的功能,占用的内存较少。
要将生成器转换为列表,您可以执行list([sum(i)] for i in new_list)
,或者在这种情况下([[sum(i)] for i in new_list])