我有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)