为什么Python中的某些列表方法只能使用已定义的变量?

时间:2012-08-31 14:15:51

标签: python list python-2.7

>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]

可是:

>>> [1, 2, 3].append(4)
>>>

为什么Python中的list方法(例如insertappend)只适用于已定义的变量?

6 个答案:

答案 0 :(得分:9)

在第二个示例中,没有打印任何内容,因为append已在列表中调用(请注意实际执行追加),返回None

或者你应该提到a.append(4)也给你一个空行(如你的第一个样本所示),第一个代码样本的最终输出是a表达式结果的表示,而不是{ {1}}表达。

在两种情况下调用a.append('4')后都没有打印,因为它是append的代表。

答案 1 :(得分:4)

list.append返回Nonea.append('4')没有打印任何内容,因为返回None的内容不会在交互式解释器中打印任何内容...

请注意,您的第二个方法调用确实有效。它将'4'附加到列表中,您将永远不会看到它,因为您立即丢失了您创建的列表上的任何句柄。

答案 2 :(得分:4)

确实有效。它只是不打印任何东西,就像a.append(4)不打印任何东西一样。这只是因为您将列表保存为可以显示其新值的变量。

答案 3 :(得分:1)

并不是列表方法只适用于已定义的变量。这是指定的方法 追加 的列表在更改相关列表的内部状态时始终返回None。

答案 4 :(得分:0)

连接列表的另一种方法:

>>> [1, 2, 3] + [4]
[1, 2, 3, 4]

请注意,在这种情况下,会创建并返回一个新列表。 list.append将项目添加到现有列表中,不会返回任何内容。

答案 5 :(得分:0)

该函数仅适用于已定义的变量,因为这是缩进工作的方式。来自python documentatio n:

  

list.append(x)的

     

将项目添加到列表的末尾;相当于a[len(a):] = [x]

请注意,在返回值并且函数不引发异常的意义上,它“工作”。但结果会丢失,因为您没有引用修改后的列表。

<小时/> 顺便说一下,有些语言强制执行命名约定,以明确函数修改给定对象。例如,Ruby和Scheme附加! - 所以在这种情况下,函数可能被称为append!。这样的命名约定有助于使函数的意图更加清晰。