Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这两个生成器表达式的作用相同吗?_Python_Generator Expression - Fatal编程技术网

Python 这两个生成器表达式的作用相同吗?

Python 这两个生成器表达式的作用相同吗?,python,generator-expression,Python,Generator Expression,假设有一个列表要处理,我不确定这两行代码是否具有相同的返回值: sum(lst[i] for i in lst[:-1] if lst[i]<0) sum(lst[i] for i in range(len(lst)-1) if lst[i]<0) sum(lst[i]对于lst[:-1]中的i,如果lst[i]在第一次循环中,您是在lst的元素上循环;不要将这些值用作索引。相反,直接使用这些值即可: sum(elem for elem in lst[:-1] if elem &

假设有一个列表要处理,我不确定这两行代码是否具有相同的返回值:

sum(lst[i] for i in lst[:-1] if lst[i]<0)

sum(lst[i] for i in range(len(lst)-1) if lst[i]<0)

sum(lst[i]对于lst[:-1]中的i,如果lst[i]在第一次循环中,您是在
lst
的元素上循环;不要将这些值用作索引。相反,直接使用这些值即可:

sum(elem for elem in lst[:-1] if elem < 0)
sum(当elem<0时,lst中elem的elem[:-1])
我将
I
重命名为
elem
,以使这一点更清楚;现在它相当于您的第二个版本,您可以使用
range()
生成的索引


当您已经有了一个序列,并且需要迭代这些值时,很少需要使用
range()
来生成索引。

否,第一个错误地使用了
i
,因此它们是不等价的。第一个不起作用。另外,您有生成器表达式,而不是列表理解。不创建列表。“我不确定这两行代码是否具有相同的返回值”为什么不尝试同时运行这两行代码并亲自查看?