Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
List 编辑项目并将其附加到嵌套列表-Python 2.7_List_Python 2.7_Nested_List Comprehension - Fatal编程技术网

List 编辑项目并将其附加到嵌套列表-Python 2.7

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]]

我需要更改子列表中的项目,并将它们存储在新列表“PlotList”中。以下是我需要进行的更改:

[?][0](所有第一个子列表项)如果是“A”,则更改为0如果是“B”,则更改为1 [?][1](第二项)无变化 [?][2](第三个-新项目)如果[?][0]为“A”,则此项目=-1,否则为[?][1]*1.2

我已经尝试了很多方法来实现这一点,但我能得到的最好的是一个正确的混乱的代码,产生3个新的列表,即

以下是一个最小的示例:

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中,空格很重要,它在注释中是不可读的。它有什么问题吗?嗯,它不会产生我想要得到的嵌套列表。我不记得我是怎么得到最后一位来做乘法的。但是你的“错误结果”与你所说的相去甚远。它确实有效。谢谢而且对我来说似乎也不太长!有些事我忘了。我需要有一个自动递增计数器作为每个嵌套列表中的第一项。无论我尝试什么都会出错。有什么想法吗?谢谢。这么简单,但我想不出来。