Python 列表扩展和变量赋值

标签 python list variable-assignment extend

<分区>

我试图扩展一个列表,结果返回值 None 令我感到困惑。我试过的是这样的:

>>> a = [1,2]  
>>> b = [3,4]  
>>> a = a.extend(b)  
>>> print a  

None

我终于意识到问题出在最后对 'a' 的冗余赋值。所以这有效:

>>> a = [1,2]  
>>> b = [3,4]  
>>> a.extend(b)  
>>> print a  

[1,2,3,4]

我不明白的是为什么第一个版本不起作用。对 'a' 的赋值是多余的,但为什么会中断操作?

最佳答案

因为,如您所见,extend 的返回值为 None。这在 Python 标准库中很常见;破坏性操作返回 None,即没有值,因此您不会想像使用纯函数一样使用它们。阅读Guido's explanation这种设计选择。

例如,列表的 sort 方法也返回 None,而非破坏性的 sorted 函数返回一个值。

关于Python 列表扩展和变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9724356/

相关文章:

python - XOR 神经网络不学习

python - 无法从源 pylance 解析导入 flask

c# - 哪个效率更高 : List<int> or int[]

python - 折叠列表列表,按特定元素分组并附加其他元素

c - `(i) = 1` 在标准 C 中是非法的吗?

tuples - 如何简单地分配多个返回值?

python - 列表和列表副本(有什么区别?)

打开成功的话pythonic的写法

r - 使用 for 循环或 lapply 迭代 R 列表中的不同数据帧

python - 主机中任务的指派/分配