Python 如何将两列常量添加到指定位置的列表中?
我想在第一列和第二列的列表中添加两列常量 我写了2个循环,因为我想添加2列 我使用以下代码:Python 如何将两列常量添加到指定位置的列表中?,python,python-3.x,list,list-comprehension,Python,Python 3.x,List,List Comprehension,我想在第一列和第二列的列表中添加两列常量 我写了2个循环,因为我想添加2列 我使用以下代码: list_a=[[1,'aa'],[2,'bb'],[3,'cc'],[4,'dd']] constant1=2018 constant2=30 for item in list_a: item.insert(0,constant1) for item in list_a: item.insert(1,constant2) print(list_a) 输出为: [[2018, 30,
list_a=[[1,'aa'],[2,'bb'],[3,'cc'],[4,'dd']]
constant1=2018
constant2=30
for item in list_a:
item.insert(0,constant1)
for item in list_a:
item.insert(1,constant2)
print(list_a)
输出为:
[[2018, 30, 1, 'aa'], [2018, 30, 2, 'bb'], [2018, 30, 3, 'cc'], [2018, 30, 4, 'dd']]
但我认为这不是一个好主意,还有其他方法吗?如果您可以创建一个新列表而不是将其更改到位,并且不介意安装一个额外的包,那么使用pandas dataframe很容易。如果你在大桌子上工作,强烈推荐熊猫。为了简单起见,我假设列是类型化的,在您的示例中就是这样 下面的代码基于 从数据帧向后转换到列表有点慢,因为 因为一旦一个人尝到了使用数据帧的滋味,他就不想回到嵌套列表 虽然我将其保留在您的解决方案附近,但Pandas非常灵活,或者,您可以创建一个包含两列的数据帧并将其连接起来,如果您喜欢一行,请参见 如果仅限于标准列表操作,或更愿意在适当的位置修改列表。一个循环就足够了
for item in list_a:
item.insert(0, constant2)
item.insert(0, constant1)
一行换一行
for (i, item) in enumerate(list_a):
list_a[i] = [constant1, constant2].extend(item)
如果您可以创建一个新列表,而不是就地更改列表,并且更喜欢使用标准列表操作,那么列表理解将比循环更加紧凑,甚至略快。您可以使用列表理解:
res = [[2018, 30, *v] for v in list_a]
[[2018, 30, 1, 'aa'],
[2018, 30, 2, 'bb'],
[2018, 30, 3, 'cc'],
[2018, 30, 4, 'dd']]
在这方面,使运营“到位”没有明显的优势。无论哪种方式,您都具有相同的时间复杂性
res = [[2018, 30, *v] for v in list_a]
[[2018, 30, 1, 'aa'],
[2018, 30, 2, 'bb'],
[2018, 30, 3, 'cc'],
[2018, 30, 4, 'dd']]