单线嵌套用于Python中的循环

时间:2017-01-16 03:44:12

标签: python arrays for-loop

我在理解嵌套的单行循环如何工作时遇到了一些麻烦。这是一个例子:

我有这段代码:

NewArray = np.array([ get_position(i, size-1, t) for i in range(0, size)])

我试图将其重写为:

for i in range(0,size):
      NewArray = np.array([ get_position(i, size-1, t)])

但我得到不同的输出,所以我猜这里有一个逻辑错误。

你能指出这个问题吗?

谢谢

2 个答案:

答案 0 :(得分:0)

首先,您创建一个长度为size的数组。 在第二个中,您反复(size次)创建一个长度为1的数组。

答案 1 :(得分:0)

这是因为第一个创建了一个包含所有值的numpy数组(您创建了所有值,因为您使用了list comprehension),第二个创建了一个包含最后一个值的新数组为每次迭代赋值(并且它会丢弃在上一次迭代中创建的数组,因为您重复使用相同的名称)。

您可以将第二个重写为:

lst = []
for i in range(0,size):
    lst.append(get_position(i, size-1, t))
NewArray = np.array(lst)

应该提供与第一次操作相同的结果。