嵌套追加操作出错?



我有两个列表:a = [0], b = [[0,1]],我想先将 2 附加到a,然后将a附加到b。所以b应该[[0,1], [0,2]]. 像这样的操作效果很好:

a.append(2)
b.append(a)

但是当我尝试将它们组合在一起时:

b.append(a.append(2))

我得到了结果:

a = [0, 2], b = [[0, 1], None]

这是怎么回事?

正如注释中回答的那样,a.append(2)只将2附加到列表中a,但它实际上并没有返回它。不修改原始列表但返回带有追加值的新列表的追加操作可以简单地使用+运算符进行写入。

>>> a, b = [0], [[0, 1]]
>>> b.append(a + [2])  # The list that is returned to the append function is [0, 2]
>>> a
[0]
>>> b
[[0, 1], [0, 2]]

我认为评论已经回答了您的问题:append()方法就地修改列表而不是创建新列表,其返回类型为None.如果仍想在一行中执行操作,可以使用赋值表达式:

a, b = [0], [[0, 1]]
b.append(a := a + [2])
print(a, b)
# [0, 2] [[0, 1], [0, 2]]

如果你想组合它们,你可以制作自己的函数,

def append_ret(x, value):
x.append(value)
return x

执行操作并返回"附加"容器。

append_ret(b, append_ret(a,1))

相关内容

最新更新