Python 列表理解将项目添加到列表列表中的每个列表
我有一个列表,我想将相同的项目添加到列表中的每个列表中。我可以用for循环来实现这一点,但我想知道如何用列表来实现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
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的理解有一个根本性的差距。