List 编辑项目并将其附加到嵌套列表-Python 2.7
我在挣扎,伙计们。我搜索了这个论坛和谷歌,但找不到一个简单的答案,我可以理解 我有一个嵌套列表“plot”,它将有数百个子列表,所有子列表的格式与此示例相同: 绘图=[[A',21.09],'A',10.00],'A',20.99],'B',58.50],'B',17.69]] 我需要更改子列表中的项目,并将它们存储在新列表“PlotList”中。以下是我需要进行的更改: [?][0](所有第一个子列表项)如果是“A”,则更改为0如果是“B”,则更改为1 [?][1](第二项)无变化 [?][2](第三个-新项目)如果[?][0]为“A”,则此项目=-1,否则为[?][1]*1.2 我已经尝试了很多方法来实现这一点,但我能得到的最好的是一个正确的混乱的代码,产生3个新的列表,即 以下是一个最小的示例:List 编辑项目并将其附加到嵌套列表-Python 2.7,list,python-2.7,nested,list-comprehension,List,Python 2.7,Nested,List Comprehension,我在挣扎,伙计们。我搜索了这个论坛和谷歌,但找不到一个简单的答案,我可以理解 我有一个嵌套列表“plot”,它将有数百个子列表,所有子列表的格式与此示例相同: 绘图=[[A',21.09],'A',10.00],'A',20.99],'B',58.50],'B',17.69]] 我需要更改子列表中的项目,并将它们存储在新列表“PlotList”中。以下是我需要进行的更改: [?][0](所有第一个子列表项)如果是“A”,则更改为0如果是“B”,则更改为1 [?][1](第二项)无变化 [?][2
plot = [['A', 21.09], ['A', 10.00], ['A', 20.99], ['B', 58.50], ['B', 17.69]]
plot0 = []
plot1 = []
plot2 = []
for i in plot:
plot0.append(i[0])
plot1.append(i[1])
for i in plot0:
if i == 'A':
plot0.append(0)
elif 1 == 'B':
plot0.append(1)
for i in plot0:
if i == 'A':
plot2.append(-1)
elif i == 'B':
plot2.append(1.2)
结果:
plot0 = [0, 0, 0, 1, 1]
plot1 = [21.09, 10.00, 29.99, 58.50, 17.69]
plot2 = [-1, -1, -1, 1.2, 1.2]
请任何人告诉我如何将此作为一个列表来编写,从而产生如下结果:
plotlists = [[0, 21.09, -1][0, 10.00, -1][0, 29.99, -1][1, 58.50, 70.56][1, 17.69, 21.23]]
这是一个相当长的列表,但它会起作用:
new_list = [[0 if sublist[0] is 'A' else 1, sublist[1], -1 if sublist[0] is 'A' else 1.2*sublist[1]] for sublist in plot]
更新:自动递增计数器
new_list = [[i, 0 if sublist[0] is 'A' else 1, sublist[1], -1 if sublist[0] is 'A' else 1.2*sublist[1]] for i, sublist in zip(xrange(0, len(plot)), plot)]
这不是一个代码编写服务;你的尝试在哪里,到底出了什么问题?提供一个用于重新创建问题的绘图。这是迄今为止我所能做的最好的:plot=[['a',21.09],'a',10.00],'a',20.99],'B',58.50],'B',17.69]]plot0=[]plot1=[]plot2=]用于plot0中的I。append(I[0])plot1.append(I[1])用于plot0中的I:如果I='a':plot0.append(0)elif 1='B':plot0.append(1)对于绘图0中的i:if i='A':plot2.append(-1)elif i='B':plot2.append(1.2)编辑问题。在Python中,空格很重要,它在注释中是不可读的。它有什么问题吗?嗯,它不会产生我想要得到的嵌套列表。我不记得我是怎么得到最后一位来做乘法的。但是你的“错误结果”与你所说的相去甚远。它确实有效。谢谢而且对我来说似乎也不太长!有些事我忘了。我需要有一个自动递增计数器作为每个嵌套列表中的第一项。无论我尝试什么都会出错。有什么想法吗?谢谢。这么简单,但我想不出来。