📜  Python - 按其他列表顺序重新排列列表(1)

📅  最后修改于: 2023-12-03 15:18:52.513000             🧑  作者: Mango

Python - 按其他列表顺序重新排列列表

有时候我们需要按照另一个列表的顺序重新排列原列表,Python 中提供了许多方法可以实现这一点。下面将介绍三种方法。

方法一:使用 sorted() 函数和 key 参数

sorted() 函数可以对列表进行排序,我们可以利用它来实现按另一个列表的顺序重新排列原列表。同时通过 key 参数指定排序规则。

original_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']
order_list = [3, 0, 2, 1, 4]

new_list = [original_list[i] for i in sorted(range(len(original_list)), key=lambda k: order_list[k])]

print(new_list)

输出结果为:

['date', 'apple', 'cherry', 'banana', 'elderberry']
方法二:使用列表推导式和 zip() 函数

列表推导式可以遍历列表并生成一个新的列表。我们可以使用 zip() 函数将原列表和按照哪个列表排序的数据合并成一个元组,然后遍历这个元组列表并根据排序规则生成新的列表。

original_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']
order_list = [3, 0, 2, 1, 4]

new_list = [x for _, x in sorted(zip(order_list, original_list))]

print(new_list)

输出结果为:

['date', 'apple', 'cherry', 'banana', 'elderberry']
方法三:使用 Pandas 库

Pandas 库是一个专门用来进行数据处理和分析的库。我们可以利用 Pandas 库的 DataFramemerge() 函数来实现按另一个列表的顺序重新排列原列表。

import pandas as pd

original_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']
order_list = [3, 0, 2, 1, 4]

df = pd.DataFrame({'original_list': original_list, 'order_list': order_list})
df = df.sort_values(by='order_list')
new_list = df['original_list'].tolist()

print(new_list)

输出结果为:

['date', 'apple', 'cherry', 'banana', 'elderberry']

以上是三种实现方式,您可以根据需求和数据量选用不同方法。