在列表理解,Python中控制三重嵌套循环的迭代

时间:2019-01-01 18:00:05

标签: python list-comprehension nested-loops

我有2个列表需要迭代:

hits_idx2 = [ 0, 1, 2]
common_b = [ [835,1234,2345] , [223,544] , [423,1234]  ]

为了产生以下输出:

  

0,835
  0,1234
  0,2345
  1,223
  1,544
  2,423
  2,1234

我使用列表推导和检查创建了一个嵌套循环,以查看该元素是否在每个迭代中返回,如果每个子列表中的最后一个元素(如果不是,则循环应继续),如果是,则应转到下一个元素的hits_idx2并遍历common_b中的第二个子列表:

for x,y in [(x,y) for x in hits_idx2 for ind in hits_idx2 for y in common_b[ind] if y!=common_b[ind][-1]]:
    print (x,y)

但不幸的是,我得到以下信息:

  

0 835
  0 1234
  0223
  0 423
  1 835
  1 1234
  1223
  1 423
  2835
  2 1234
  2223
  2423

我有点受阻,任何帮助都超过了欢迎。谢谢!

我如下解决了该问题:

for h,y in [ (h,common) for h, common in [(h, common) for h, commons in zip(hits_idx2, common_b) for common in commons] ]:
    print(h,y)

0 个答案:

没有答案