【问题标题】:Append to an empty list using a single line for-loop python使用单行for循环python追加到一个空列表
【发布时间】:2015-03-28 05:35:54
【问题描述】:

我正在尝试使用单行 for 循环将数字从生成器附加到空列表,但它返回 None。我知道可以使用带有 2 行的 for 循环来完成,但我想知道我错过了什么。即,

>>> [].append(i) for i in range(10)

[None, None, None, None, None, None, None, None, None, None]

我希望在一行中创建它:

>>> [].append(i) for i in range(10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

谢谢。

【问题讨论】:

    标签: list python-3.x append


    【解决方案1】:

    写一个正确的理解,不附加。

    >>> [i for i in range(10)]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> list(i for i in range(10))
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    【讨论】:

    • 哦,太好了!非常感谢!
    【解决方案2】:

    你也可以只转换一个可迭代的范围:

    list(range(10))
    >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    也适用于 numpy 用户:

    np.arange(10)
    >>> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    

    如果你更容易理解,你可以使用 linspace (linspace(from,to,pieces)):

    np.linspace(0,9,10)
    >>> array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
    

    【讨论】:

      【解决方案3】:

      添加关于发生了什么的解释, 追加不返回任何东西,

      y = []
      x = [y.append(i) for i in range(10)]
      print(x)
      print(y)
      

      生产

      [None, None, None, None, None, None, None, None, None, None]
      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      
      [Program finished]
      

      【讨论】:

        【解决方案4】:

        y = []

        [y.append(i) for i in range(10)]

        打印(y)

        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

        【讨论】:

        猜你喜欢
        • 2018-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多