python - 为什么我不能插入 Python 列表?

标签 python python-3.x list insert

我正在尝试按索引向现有列表中插入一些项目,如下所示:

c = ['545646', 'text_item', '151561'].insert(1, '555')
print(c)

我得到的结果是 None。

output

为什么我不能插入 Python 列表?

所需的输出是:

['545646', '555', 'text_item', '151561']

最佳答案

按照 Python 惯例,所有 mutating 函数都返回 None非变异 函数返回新值。 insert 是一个变异函数(改变它操作的对象),所以它返回 None;然后将其分配给 c

事实上,目前的Python是没有办法在一条语句中做到这一点的。在未来(几乎可以肯定在 Python 3.8 中),有一个 walrus operator 的提议可以让你缩短它:

(c := ['545646', 'text_item', '151561']).insert(1, '555')

虽然我相信 Pythonistas 会对此皱眉:)

编辑:对于评论中的问题,如何将插入作为表达式?最简单的方法是定义另一个函数;例如:

def insert_and_return_list(lst, pos, val):
    lst.insert(pos, val)
    return lst

c = insert_and_return_list(['545646', 'text_item', '151561'], 1, '555')

你也可以完全避免 insert,而使用 slice 和 splats:

[*lst[:1], '555', *lst[2:]]

关于python - 为什么我不能插入 Python 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57218770/

相关文章:

python - 谷歌应用引擎+python(django)部署错误: Error loading MySQLdb module

python - 如何让 offsetof() 成为私有(private)类成员?

python - 使用 tkinter 在直方图中显示出现次数

list - Erlang:是否可以将最小函数编写为列表折叠?

css - 我可以仅使用 CSS 根据包含的列表项的数量设置 ListView 的样式吗?

Python列表错误,列表索引超出范围

python - Scrapy - 如何在使用脚本启动蜘蛛时加载项目级别的 settings.py

python - 有没有办法将 pygame.display.update 添加到缩进循环中

python - 损失函数中的所有变量都必须是 pytorch 中带有 grads 的张量吗?

c - 在 Cython 中使用 PyCapsule