我是python 3的新手,每次匹配都难以从2个列表返回值。

locations = [("ngv", 4, 0), ("town hall", 4, 4),("myhotel",  2, 2), ("parliament", 8, 5.5), ("fed square",  4, 2)]

tour = ["ngv", "fed square", "myhotel"]


我的代码找到了匹配项,但也不会返回位置坐标。

['ngv', 'fed square', 'myhotel']


我当前的代码是:

places = [u[0] for u in locations]
new = [i for i in tour if i in places]
print(new)

最佳答案

您不需要中间列表理解,只需:

new = [i for i in locations if i[0] in tour]


请注意,如果locationstour包含许多项,则可以通过先将tour设置为set(例如tour = set(tour))来加快代码速度并降低时间复杂度

关于python - Python:返回每个匹配项的列表值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45964249/

10-10 04:18