Python - 直接扩展列表会导致无,为什么?

时间:2014-02-27 11:40:29

标签: python list python-3.x append extend

x=[1,2,3]
x.extend('a')

输出:

x is [1,2,3,'a']

但是当我做以下事情时:

[1,2,3].extend('a')

输出:

None

为什么扩展工作在列表引用上,但不在列表上?

第二部分:

我发现这是因为我在尝试将listC扩展到listB时尝试将listB附加到listA。

listA.append([listB[15:18].extend(listC[3:12])])

假设无法直接追加/扩展列表。表单最流行的解决此问题的工作是什么?

2 个答案:

答案 0 :(得分:4)

list.extend修改列表并返回任何内容,从而产生None。在第二种情况下,它是一个正在扩展的临时列表,在该行之后立即消失,而在第一种情况下,它可以通过x引用。

  

在尝试将listC扩展到listB时将listB附加到listA。

您可能希望尝试以下操作,而不是使用extend

listA.append(listB[15:18] + listC[3:12])

如果您想要实际修改extendlistB,请使用listC在多个简单的行中执行此操作。

答案 1 :(得分:0)

extend会自我扩展列表。该方法的返回类型为None

如果你想要union 2列表并将该列表添加到另一个列表,那么你必须使用另一种方式来添加。

listB[15:18] = listC[3:12]
listA.extend(listB)