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

Python—扩展列表直接导致无,为什么?,python,list,python-3.x,append,extend,Python,List,Python 3.x,Append,Extend,输出: x=[1,2,3] x.extend('a') [1,2,3].extend('a') 但当我做以下事情时: x is [1,2,3,'a'] 输出: x=[1,2,3] x.extend('a') [1,2,3].extend('a') 为什么扩展工作在列表引用上,而不是列表上 第二部分: 我发现这一点是因为我试图将listB附加到listA,同时尝试将listC扩展到listB None 假设列表不能直接追加/扩展。解决此问题最常用的变通方式是什么?list.extend

输出:

x=[1,2,3]
x.extend('a')
[1,2,3].extend('a')
但当我做以下事情时:

x is [1,2,3,'a']
输出:

x=[1,2,3]
x.extend('a')
[1,2,3].extend('a')
为什么扩展工作在列表引用上,而不是列表上

第二部分: 我发现这一点是因为我试图将listB附加到listA,同时尝试将listC扩展到listB

None

假设列表不能直接追加/扩展。解决此问题最常用的变通方式是什么?

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

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

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

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

如果您想实际修改
listB
listC
列表,也可以使用
extend
在多个简单行中执行此操作。extend
修改列表并不返回任何内容,从而导致
None
。在第二种情况下,它是一个正在扩展的临时列表,在该行之后立即消失,而在第一种情况下,它可以通过
x
引用

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

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

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

如果您想实际修改
listB
listC
extend
将自己扩展列表,也可以使用
extend
在多个简单的行中执行。该方法的返回类型为
None

如果您想
union
2列表并将该列表添加到另一个列表中,则必须使用另一种方式添加

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

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

如果您想
union
2列表并将该列表添加到另一个列表中,则必须使用另一种方式添加

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

None
是print语句的输出,如果您使用的是
print[1,2,3]。extend('a')
。因为
extend
的返回类型是
None
,所以Python中的惯例是,变异序列的方法返回
None
。更多。
None
是print语句的输出,如果您使用的是
print[1,2,3]。extend('a')
。因为
extend
的返回类型是
None
,所以Python中的惯例是,变异序列的方法返回
None
。更多