【问题标题】:Python List concepts [duplicate]Python列表概念[重复]
【发布时间】:2012-03-30 14:53:30
【问题描述】:

我是 python 编程的新手 为什么这个赋值给 k 的值是 'None'

> >>> l=[2,3,4]
> >>> k=l.append(14)
> >>> print k
None
> >>> print l
[2, 3, 4, 14]

在上面的示例列表中,我将 14 值附加到列表中,然后分配给 k,但 k 正在打印 None 请告诉我为什么它打印 None 而不是附加列表?

谢谢 穆克蒂亚尔

【问题讨论】:

标签: python python-3.x


【解决方案1】:

append 更改当前列表并且不返回任何内容。使用:

k = l + [14]

k = l[:]       # Copy list
k.append(14)

【讨论】:

    【解决方案2】:

    Python 中大多数改变其实例的方法(.append()、.sort() 等)不会返回对象的副本。因此 l.append(X) 确实像 l.sort() 一样返回“None”。

    你可能想要使用类似的东西:

    l.append(14)
    k = l[-1]
    

    【讨论】:

      【解决方案3】:

      在 python 中默认返回类型是None,所以如果你的函数没有返回任何值,那么你会从那个函数中得到None。对象有不同的功能。一些函数在同一个对象上执行,而另一些函数则返回修改后的副本。例如list.sort 将更改原始列表,而sorted 将返回新的排序列表而不更改原始列表。所以append 正在处理对象,因此它将更改对象值而不是返回新的修改副本。

      希望这将使您对append 方法的看法更加清晰。

      【讨论】:

        【解决方案4】:

        您所看到的是预期的 - list.append 方法不会返回修改后的列表。如果您查看 Python 教程的 relevant section,您会注意到返回有用值的方法是这样记录的。

        在交互式解释器中工作,您可以看出表达式由于缺少输出而产生 None:

        >>> l = [1, 2, 3]
        >>> l.append(14)
        >>>
        

        如果(理论上)list.append 返回列表,您将看到以下内容:

        >>> l = [1, 2, 3]
        >>> l.append(14)
        [1, 2, 3, 14]
        >>>
        

        以这种方式使用交互式解释器可以避免打印每个值。

        【讨论】:

          【解决方案5】:

          来自python文档

          list.append(x)
              Add an item to the end of the list; equivalent to a[len(a):] = [x].
          

          简单来说,追加函数只返回

          suggested reading

          【讨论】:

            猜你喜欢
            • 2020-02-05
            • 2015-01-05
            • 1970-01-01
            • 2018-09-20
            • 2020-02-05
            • 2016-05-08
            • 2013-10-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多