将列表顺序应用于其他列表

时间:2016-02-12 17:30:45

标签: python list python-2.7

我有一个列表,具有特定的顺序:

L = [1, 2, 5, 8, 3]

一些子列表包含主列表的元素,但顺序不同:

L1 = [5, 3, 1]
L2 = [8, 1, 5]

如何将L的订单应用于L1L2

例如,处理后的正确顺序应为:

 L1 = [1, 5, 3]
 L2 = [1, 5, 8]

我正在尝试这样的事情,但我正在努力如何使用正确的顺序设置新列表。

new_L1 = []
for i in L1:
   if i in L: 
      print L.index(i) #get the order in L

2 个答案:

答案 0 :(得分:12)

您似乎只想根据价值落在L1的索引对L2L进行排序。

L = [1, 2, 5, 8, 3]

L1 = [5, 3, 1]
L2 = [8, 1, 5]

L1.sort(key = lambda x: L.index(x))
L2.sort(key = lambda x: L.index(x))

答案 1 :(得分:2)

以下是使用列表推导进行排序的另一种方法:

>>> L = [1, 2, 5, 8, 3]
>>> 
>>> L1 = [5, 3, 1]
>>> L2 = [8, 1, 5]
>>> 
>>> L1 = [i for i in L if i in L1]
>>> L2 = [i for i in L if i in L2]
>>> 
>>> L1
[1, 5, 3]
>>> L2
[1, 5, 8]