问题描述
我想知道是否可以像我们在下面看到的那样运行枚举循环
int_term = [scipy.quad(t_x,x0,i)[0] for i in enumerate(x_vals)]
还是我们必须这样写
for i in enumerate(x_vals)
解决方法
希望这能澄清 enumerate 的作用:
>>> list(enumerate('abc'))
[(0,'a'),(1,'b'),(2,'c')]
它只是将您的列表变成一个对的列表,其中您的每个元素都与索引相连,即 a
为 0,b
为 1,c
为 2。
这并不完全正确,因为它是一个迭代器而不是一个实际的列表——所以当你包装另一个迭代器时它会懒惰地为你提供值。
因此,循环遍历它与任何其他列表相同,但通常按以下方式完成:
for i,x in enumerate(xs)
您仍然可以使用:
for i in enumerate(xs)
但是只要知道 i 将是一个带有一些 int 的元组,以及来自 xs
的一些对象。