Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表扩展和变量赋值_Python_List_Variable Assignment_Extend - Fatal编程技术网

Python列表扩展和变量赋值

Python列表扩展和变量赋值,python,list,variable-assignment,extend,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(

我试图扩展一个列表,结果返回值为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
,即没有值,因此您不会像使用纯函数一样使用它们。阅读此设计选择


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

因为所有就地函数都返回
None
,以强调它们正在改变参数的事实。否则,您可能会将返回值赋给某个对象,而没有意识到参数也已更改。

Simply.extend()不返回任何值

如果你愿意,你可以加入他们


a=a+b

谢谢丹尼尔。当然,你的回答也是正确的。我只能挑一个来接受!