Python - 直接扩展列表会导致无,为啥?
Posted
技术标签:
【中文标题】Python - 直接扩展列表会导致无,为啥?【英文标题】:Python - Extending a list directly results in None, why?Python - 直接扩展列表会导致无,为什么? 【发布时间】:2014-03-30 19:37:55 【问题描述】:x=[1,2,3]
x.extend('a')
输出:
x is [1,2,3,'a']
但是当我执行以下操作时:
[1,2,3].extend('a')
输出:
None
为什么extend 对列表引用起作用,但对列表不起作用?
第二部分:
我发现这个是因为我试图将 listB 附加到 listA,同时尝试将 listC 扩展到 listB。
listA.append([listB[15:18].extend(listC[3:12])])
假设列表不能直接附加/扩展。解决此问题的最流行的表单解决方法是什么?
【问题讨论】:
None
是 print 语句的输出,如果您使用的是print [1,2,3].extend('a')
。因为extend
的返回类型是None
Python 中的约定是,改变序列的方法返回None
。更多here.
【参考方案1】:
list.extend
就地修改列表并且不返回任何内容,从而导致None
。在第二种情况下,它是一个正在扩展的临时列表,在该行之后立即消失,而在第一种情况下,它可以通过x
引用。
在尝试将 listC 扩展到 listB 时将 listB 附加到 listA。
您可能想试试这个,而不是使用extend
:
listA.append(listB[15:18] + listC[3:12])
如果您想实际修改listB
或listC
,请使用extend
在多个简单的行中执行此操作。
【讨论】:
【参考方案2】:extend
将自行扩展列表。该方法的返回类型为None
如果你想union
2 列出并将该列表添加到另一个列表中,那么你必须使用另一种方式添加。
listB[15:18] = listC[3:12]
listA.extend(listB)
【讨论】:
以上是关于Python - 直接扩展列表会导致无,为啥?的主要内容,如果未能解决你的问题,请参考以下文章