>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
可是:
>>> [1, 2, 3].append(4)
>>>
为什么Python中的list
方法(例如insert
和append
)只适用于已定义的变量?
答案 0 :(得分:9)
在第二个示例中,没有打印任何内容,因为append
已在列表中调用(请注意实际执行追加),返回None
。
或者你应该提到a.append(4)
也给你一个空行(如你的第一个样本所示),第一个代码样本的最终输出是a
表达式结果的表示,而不是{ {1}}表达。
在两种情况下调用a.append('4')
后都没有打印,因为它是append
的代表。
答案 1 :(得分:4)
list.append
返回None
。 a.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!
。这样的命名约定有助于使函数的意图更加清晰。