我有两个嵌套列表
l1 = [[1,2,3],[4,5,6],[7,8,9]]
l2 = [['a','b',4],['c','d',1],['e','f',12],['i','j',18]]
我希望您能够迭代遍历列表
l1
并检查l1[0]
是否与任何一个l2[2]
匹配,如果匹配,则输出[1, l1[0],l2[0]]
,否则输出[0, l1[0], l2[0]]
。输出应为一个单独的嵌套列表(或元组列表),其中包含每个l1
元素的结果。两个列表的大小可以不同。我尝试使用for循环解决此问题,例如:
output = list()
for i in l1:
matched = 0
for j in l2:
if j[2] == i[0]:
output.append([1,i[0], j[0]])
matched = 1
if matched == 0:
output.append([0,i[0]])
这将输出正确的结果。
[[1, 1, 'c'], [1, 4, 'a'], [0, 7]]
然而,我正在寻找一种更紧凑的解决方案。是否可能通过列表推导式或类似的方法来减少涉及的代码行数?
我尝试了嵌套的列表推导式,但无法使其正常工作。
out = [[(1,i[0],k[0]) if(k[2] == i[0]) else (0,i[0],k[0]) for k in l2] for i in l1]
print(out)
[[(0, 1, 'a'), (1, 1, 'c'), (0, 1, 'e'), (0, 1, 'i')], [(1, 4, 'a'), (0, 4, 'c'), (0, 4, 'e'), (0, 4, 'i')], [(0, 7, 'a'), (0, 7, 'c'), (0, 7, 'e'), (0, 7, 'i')]]
dict
来查找你要搜索的内容? - Alfedict
。 - Sohaib Farooqi[next(([1, x[0], y[0]] for y in l2 if x[0] == y[-1]), [0, x[0], l2[-1][0]]) for x in l1]
- cs95