我有一个列表,具有特定的顺序:
L = [1, 2, 5, 8, 3]
一些子列表包含主列表的元素,但顺序不同:
L1 = [5, 3, 1]
L2 = [8, 1, 5]
如何将L
的订单应用于L1
和L2
?
例如,处理后的正确顺序应为:
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
答案 0 :(得分:12)
您似乎只想根据价值落在L1
的索引对L2
和L
进行排序。
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]