Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我不能插入Python列表?_Python_Python 3.x_List_Insert - Fatal编程技术网

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

为什么我不能插入Python列表?,python,python-3.x,list,insert,Python,Python 3.x,List,Insert,我正在尝试按索引将某些项插入现有列表,如下所示: c = ['545646', 'text_item', '151561'].insert(1, '555') print(c) 我没有得到任何结果 为什么我不能插入Python列表 所需的输出是: ['545646', '555', 'text_item', '151561'] 试试这个 c = ['545646', 'text_item', '151561'] c.insert(1, '555') print(c) 说明: 每个pyth

我正在尝试按索引将某些项插入现有列表,如下所示:

c = ['545646', 'text_item', '151561'].insert(1, '555')
print(c)
我没有得到任何结果

为什么我不能插入Python列表

所需的输出是:

['545646', '555', 'text_item', '151561']
试试这个

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

每个python
函数
调用都将返回一些值或不返回任何值。如果调用
list.insert()
函数,返回值为
None
,您将其保存为变量
c
,该变量将为
None

编辑: 对于评论中的后续问题:我正在做列表理解,我正在处理列表列表。因此,每次我想使用2种方法逐个插入和弹出更改列表中的项目时。如何在列表理解时进行这些更改

你通常应该避免列出comp,因为它有副作用

相反,你应该:

for sublist in l:
    sublist.insert(1, '555') # or call sublist.pop
按照Python的约定,所有变异函数都返回
None
。非交换函数返回新值
insert
是一个变异函数(更改它所操作的对象),因此它返回
None
;然后将其分配给
c

事实上,在当前的Python中,在一条语句中无法做到这一点。在将来(几乎可以肯定在Python 3.8中),有一个关于a的建议,它将允许您缩短:

(c := ['545646', 'text_item', '151561']).insert(1, '555')
虽然我相信蟒蛇会对此皱眉:)

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

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')
您还可以完全避免插入,并使用切片和splat:

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

Insert方法始终返回null。您正在尝试打印null类型。 因此,不要将insert方法映射到任何变量。使用insert作为方法并打印原始列表 试试这个


现在您已经了解了为什么变量
c
会得到值
None
,您可以在新问题中提出后续问题。很难更改此答案以适应您没有提出的问题和刚刚发表的评论。再问一个问题。
c=['545646', 'text_item', '151561']
c.insert(1,55)
print(c)