将一个列表中的值与另一个列表中的值以编程方式关联

时间:2017-09-09 04:39:30

标签: python list

(以更简洁的方式再次询问)

我有四个值列表,我需要像这样链接第一个和最后一个:

enter image description here

这样我可以绘制积分(4,8350.1416),(10,13167.329),(15,29200.063)等。

enumerate函数可以让我访问最右边列表的索引,但是如何将该值中的值与最左边列表中的正确值相关联?

每次运行代码时列表都会发生变化,所以我需要以编程方式进行,例如在for循环中。

编辑:我的程序沿着随机选择的行读取像素值。 List1保存最小值像素,list2保存它们的值。然后list3保存这些最小值的最小值,list4保存它们的值。像这样描述它听起来比它更令人困惑!

我尝试过使用

ubermin_vals_x = []
for i in ubermin_values:
    value = ubermin_pixels[i]
    ubermin_vals_x.append(minimum_pixels[i])

但它试图迭代值(8350.1416,13167.329 ......),这当然无法完成。

我试图将列表绘制成如下:

enter image description here

但是list4中的黑色插图位于x轴的正确位置,在list1中给出。

3 个答案:

答案 0 :(得分:2)

从左到右命名列表为l1,l2,l3,l4 l2对我来说似乎没用,因为它只是复制了l4中的值,所以如果我理解了这个问题,那么代码可能是:

for i,v in zip(l3,l4):
    print (l1[i],v)  #or  plot

您可以将v替换为l2[i]。 甚至更简单:

for i in l3:
    print (l1[i],l2[i])

从下面的注释中,你的示例l3中的元素似乎是sigle-element list,代码变为:

for i in l3:
    print (l1[i[0]],l2[i[0]])

答案 1 :(得分:1)

我不太清楚你要做什么,但这是我的猜测

  1. 在第二个数组中找到第四个数组中元素的索引
  2. 使用该索引提取第一个数组中的数字
  3. ,实施如下

    a4 = [ 8350.1416, 13167.329, 29200.063 ] 
    a2 = [13846, 8350.1416, 0, 13167.329, 0, 29200.063]
    a1 = [1, 4, 7, 10, 12, 15, 18]
    idx = [a1[a2.index(x)] for x in a4]
    result = zip(idx, a4)
    

    我也怀疑@Vincenzooo的回答已经非常接近你想要的了。也许

    for i in l3:
        print (l1[i[0]],l2[i[0]])
    

答案 2 :(得分:0)

谢谢大家,特别是@Vincenzoo

现在可以使用:

uberminxlist = []
uberminylist = []
for i in ubermin_pixels:
    uberminxlist.append(minimum_pixels[i[0]])
    uberminylist.append(minimum_values[i[0]])

可爱:)