关于python:为什么在将一个项目附加到一个现有的列表时会得到一个”none”项目?

Why do we get a 'None' item when appending an item to an existing list?

本问题已经有最佳答案,请猛点这里访问。

用例:我想将一个新项目以及列表中的所有现有项目附加到同一个列表中。前任:

1
list = [ 'a', 'b', 'c']

追加'd',期望输出为:['a', 'b', 'c', 'a', 'b', 'c', 'd']

我的代码:

1
list.append(list.append('d'))

电流输出:

1
['a', 'b', 'c', 'd', None]

为什么我在这里得到一个None项目,我如何才能按预期打印列表?


list.append('d')代替。

list中的append函数不返回任何内容,因此list.append(list.append('d'))将被添加到None中。

要打印预期列表(让列表为"l"):

1
2
3
4
list_old = list(l)
l += l # ['a', 'b', 'c'] -> ['a', 'b', 'c', 'a', 'b', 'c']
l.append('d')
list_old.extend(l)

list.append返回None。这是因为list.append是一种就地操作。此外,您正在隐藏一个内置的,这是不推荐的。

你可以先复印一份,然后再复印一份你的原始清单:

1
2
3
4
L = ['a', 'b', 'c']
L_to_append = L.copy()
L_to_append.append('d')
L.extend(L_to_append)

但这很冗长。您只需使用+=操作符:

1
2
3
4
5
6
L = ['a', 'b', 'c']
L += L + ['d']

print(L)

['a', 'b', 'c', 'a', 'b', 'c', 'd']