Python列表扩展和变量赋值
作者:互联网
我试图扩展一个列表,并对结果返回值为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.
例如,列表上的排序方法也返回None,而非破坏性排序函数返回一个值.
标签:python,list,extend,variable-assignment 来源: https://codeday.me/bug/20191008/1872346.html