将列表与元组列表进行比较以获取另一个列表

Jen*_*nny 11 python list

我是python的新手,所以为天真的问题道歉.我有一份清单

l1 = [2, 4, 6, 7, 8] 
Run Code Online (Sandbox Code Playgroud)

和另一个元组列表

l2 = [(4,6), (6,8), (8,10)]
Run Code Online (Sandbox Code Playgroud)

我想输出一个l3大小列表,l1用于比较l1第一个坐标的值,l2如果找到第一个坐标则存储第二个坐标l1,否则存储0.

输出:

l3 = [0, 6, 8, 0, 10]
Run Code Online (Sandbox Code Playgroud)

我厌倦了做一个for循环,如:

l3 = []
for i in range(len(l1)):
   if l1[i] == l2[i][0]:
      l3.append(l2[i][1])
   else:
      l3.append(0)  
Run Code Online (Sandbox Code Playgroud)

但这不起作用.它给出了错误

IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

这显然l2比短于l1.

Aja*_*234 11

您可以从l2以下位置创建字典:

l1 = [2,4,6,7,8] 
l2 =[(4,6),(6,8),(8,10)]
new_l2 = dict(l2)
l3 = [new_l2.get(i, 0) for i in l1]
Run Code Online (Sandbox Code Playgroud)

输出:

l3 = [0,6,8,0,10]
Run Code Online (Sandbox Code Playgroud)

  • 优雅的解决方案,天真的方法将在循环内使用循环. (2认同)