list_1 = [2, 7, 4, 5, 6, 1, 3, 8, 9]
list_2 = [(1, 5), (2, 0), (3, 6), (4, 4), (5, 3), (6, 2), (7, 1), (8, 7), (9, 8)]
我想重新排序列表list_2
,使得每个元组的第一个元素按照list_1
指定的顺序排列,因此:
list_2_ordered = [(2, 0), (7, 1), (4, 4), (5, 3), (6, 2), (1, 5), (3, 6), (8, 7), (9, 8)]
我试图使用map
函数将filter
映射到list_1
作为可迭代对象(一般思路是:map(filter(lambda x,j : x[0]==j, list_2),list_1)
)。但显然它不起作用(我认为是由于类型错误)。如何在最少的代码行数中实现此操作?
sorted
函数。"按指定顺序跟随" 好的,您可以使用sorted
函数的key
参数。"通过列表1来" 即通过其在列表1中的位置,该位置由该列表上的.index
方法给出。阅读文档,解决方案就呼之欲出了。“我尝试使用map函数将filter映射到list_1上作为可迭代对象” 这没有任何意义。filter
用于删除元素,而不是重新排序它们;并且它已经处理了整个序列。map
用于将单个元素函数 应用于序列。 - Karl Knechtelkey=lambda t: <function>(t[0])
。 - wjandrea[list_2[i-1] for i in list_1]
??? - juanpa.arrivillaga