Why I cannot make an insert to Python list?(为什么我不能插入 Python 列表?)
问题描述
我正在尝试按索引向现有列表插入一些项目,如下所示:
I'm trying to insert some item by index to existing list like this:
c = ['545646', 'text_item', '151561'].insert(1, '555')
print(c)
我得到的结果是 None .
And I'm getting None in result.
为什么我不能插入 Python 列表?
Why I cannot make an insert to the Python list?
需要的输出是:
['545646', '555', 'text_item', '151561']
推荐答案
根据 Python 约定,所有 mutating 函数都返回 None
.Nonmutating 函数返回新值.insert
是一个变异函数(改变它操作的对象),所以它返回 None
;然后将其分配给 c
.
By Python convention, all mutating functions return None
. Nonmutating functions return the new value. insert
is a mutating function (changes the object it operates on), so it returns None
; you then assign it to c
.
事实上,在当前的 Python 中,没有办法在一条语句中做到这一点.在未来(几乎可以肯定在 Python 3.8 中),有一个关于 海象运算符的提议 这将允许你缩短这个:
In fact, there is no way to do this in one statement in current Python. In the future (almost certainly in Python 3.8), there is a proposal for a walrus operator that will allow you to shorten this:
(c := ['545646', 'text_item', '151561']).insert(1, '555')
虽然我相信 Pythonistas 会对此皱眉头:)
though I believe Pythonistas will frown on it :)
随着评论中的问题,如何将插入作为表达式?最简单的方法是定义另一个函数;例如:
With the question in the comments, how to do an insert as an expression? The easiest way is to define another function; for example:
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
,而使用切片和 splats:
You could also avoid insert
altogether, and use slices and splats:
[*lst[:1], '555', *lst[2:]]
这篇关于为什么我不能插入 Python 列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么我不能插入 Python 列表?
基础教程推荐
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 筛选NumPy数组 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01