我正在尝试按索引向现有列表中插入一些项目,如下所示:
c = ['545646', 'text_item', '151561'].insert(1, '555')
print(c)
我得到的结果是 None。
为什么我不能插入 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/