【问题标题】:Single Line Nested For Loops in PythonPython中的单行嵌套for循环
【发布时间】:2017-01-16 03:44:11
【问题描述】:

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

我有这个代码:

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)])

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

你能指出问题吗?

谢谢

【问题讨论】:

    标签: python arrays for-loop


    【解决方案1】:

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

    您可以将第二个重写为:

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

    这应该与您的第一次操作产生相同的结果。

    【讨论】:

      【解决方案2】:

      首先创建一个长度为size 的数组。 在第二次你重复(size 次)创建一个长度为1 的数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-05
        • 2019-04-15
        • 1970-01-01
        • 2013-08-09
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多