Python 列表理解将项目添加到列表列表中的每个列表

Python 列表理解将项目添加到列表列表中的每个列表,python,list,python-3.x,Python,List,Python 3.x,我有一个列表,我想将相同的项目添加到列表中的每个列表中。我可以用for循环来实现这一点,但我想知道如何用列表来实现 ls = [[1,2,3],[4,5,6],[7,8,9]] for i in ls: i.insert(0, 'x') ls [['x',1,2,3],['x',4,5,6],['x',7,8,9]] 这不管用 ls = [[i.insert(0, 'x')] for i in ls] 我只是 [[None], [None], [None]] 因为insert

我有一个列表,我想将相同的项目添加到列表中的每个列表中。我可以用for循环来实现这一点,但我想知道如何用列表来实现

ls = [[1,2,3],[4,5,6],[7,8,9]] 

for i in ls:
    i.insert(0, 'x')

ls
[['x',1,2,3],['x',4,5,6],['x',7,8,9]]
这不管用

ls = [[i.insert(0, 'x')] for i in ls]
我只是

[[None], [None], [None]]

因为
insert
已就位(它修改调用它的列表并返回
None

您可以为ls中的i执行
[[i.insert(0,'x')]
(无需将其重新分配给
ls
),但显式循环具有更好的可读性,并且没有“神奇”的副作用

ls = [[1,2,3],[4,5,6],[7,8,9]]
[[i.insert(0, 'x')] for i in ls]
print(ls)
>> [['x', 1, 2, 3], ['x', 4, 5, 6], ['x', 7, 8, 9]]

您不必使用
insert
,只需添加列表即可:

ls = [['x'] + i for i in ls]
[['x', 1, 2, 3], ['x', 4, 5, 6], ['x', 7, 8, 9]]
如前所述,
insert
更改就地列表,返回
None
;这就是你用来填充你正在创建的列表的内容

在Python
=3.5
中,可以通过在列表文本中解包来美化:

ls = [['x', *i] for i in ls]

你不需要对列表进行理解-你想要改变现有的列表,而不是创建新的列表。那太好了,谢谢你的解释。我对insert的理解有一个根本性的差距。