【发布时间】:2020-08-28 16:37:04
【问题描述】:
假设我有两个列表: 列表1
[26, 45, 15]
列表2
[13, 15, 20]
假设两个列表之间总是有一个完全相同的元素,我将如何将 list2 重新排序为:
[20, 13, 15]
其中 15 成为 list2 的第三个元素,因为 15 是 list1 的第三个元素(同时保持 13、15、然后 20 的顺序)?我尝试过这样的事情:
# Reorder list2 to correspond with list1
key = 0
newOrder = []
for i in range(3):
for j in range(3):
if list2[i] == list1[j]: # if elements
key = i - j
for k in range(3):
index = k + key
if index == 3:
index = 0
if index == -1:
index = 2
newOrder.append(list2[index])
但它没有 100% 的成功率。
【问题讨论】:
-
"(保留数字序列的同时)" 那不应该是
[13, 20, 15]吗?还是您的意思是要“旋转”列表,直到匹配的元素出现在正确的位置? -
虽然没有保留序列
-
@tobias_k 我应该说得更清楚。顺序保持不变(总是按照 13、15、20 的顺序)
-
我无法理解这一点。:
While the order of 13, 15, and then 20 is kept
标签: python