为啥在将项目附加到现有列表时会得到“无”项目? [复制]

Posted

技术标签:

【中文标题】为啥在将项目附加到现有列表时会得到“无”项目? [复制]【英文标题】:Why do we get a 'None' item when appending an item to an existing list? [duplicate]为什么在将项目附加到现有列表时会得到“无”项目? [复制] 【发布时间】:2019-05-04 17:13:44 【问题描述】:

用例: 我想将一个新项目与列表中的所有现有项目一起附加到同一个列表中。 例如:

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

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

我的代码:

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

当前输出:

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

为什么我会在此处收到 None 项目,如何按预期打印列表?

【问题讨论】:

注意:应该避免隐藏像list 这样的内置名称。我建议使用不同的变量名。 【参考方案1】:

请改用list.append('d')

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

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

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

【讨论】:

【参考方案2】:

list.append 返回None。这是因为list.append 是一个就地 操作。此外,您正在对内置进行遮蔽,不建议这样做。

可以 append 复制一份,然后extend 您的原始列表:

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

但这很冗长。您可以只使用+= 运算符:

L = ['a', 'b', 'c']
L += L + ['d']

print(L)

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

【讨论】:

以上是关于为啥在将项目附加到现有列表时会得到“无”项目? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Select2 在将数据附加到现有选择后初始化选择

如何在将 Snowpack 添加到现有 Node 项目时指定公共 HTML 文件夹?

在将列表存储为对象之前引用列表中的其他项目

将项目从对话框添加到 ListView

使用 AWS AppSync 将项目附加到 DynamoDB

将项目附加到列表列表中的指定列表(Python)[重复]