Qua*_*ati 2 python list insert python-3.x
我正在尝试通过索引向现有列表插入一些项目,如下所示:
c = ['545646', 'text_item', '151561'].insert(1, '555')
print(c)
Run Code Online (Sandbox Code Playgroud)
结果我什么也没有。
为什么我不能在Python列表中插入?
所需的输出是:
['545646', '555', 'text_item', '151561']
Run Code Online (Sandbox Code Playgroud)
按照Python约定,所有变异函数都返回None。非变异函数返回新值。insert是一个变异函数(更改其操作的对象),因此返回None;然后将其分配给c。
实际上,在当前的Python中,没有一种方法可以做到这一点。将来(几乎可以肯定,在Python 3.8中),有一个关于海象运算符的建议,它可以使您缩短此时间:
(c := ['545646', 'text_item', '151561']).insert(1, '555')
Run Code Online (Sandbox Code Playgroud)
虽然我相信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')
Run Code Online (Sandbox Code Playgroud)
您也可以insert完全避免使用切片和splats:
[*lst[:1], '555', *lst[2:]]
Run Code Online (Sandbox Code Playgroud)
尝试这个
c = ['545646', 'text_item', '151561']
c.insert(1, '555')
print(c)
Run Code Online (Sandbox Code Playgroud)
说明:
每个python function调用都会返回一些值或None。如果是list.insert()函数调用,则返回值就是None您要保存为的变量c,该变量将为None。
编辑: 评论中的后续问题:我正在执行列表理解,并且正在处理列表的列表。因此,每次我想使用2种方法来更改列表中的项目时,依次插入和弹出。列表理解时如何进行这些更改?
您通常应该避免list comp这种副作用。
而是:
for sublist in l:
sublist.insert(1, '555') # or call sublist.pop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |