我在理解嵌套的单行循环如何工作时遇到了一些麻烦。这是一个例子:
我有这段代码:
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)])
但我得到不同的输出,所以我猜这里有一个逻辑错误。
你能指出这个问题吗?
谢谢
答案 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)
应该提供与第一次操作相同的结果。