📅  最后修改于: 2023-12-03 15:18:52.513000             🧑  作者: Mango
有时候我们需要按照另一个列表的顺序重新排列原列表,Python 中提供了许多方法可以实现这一点。下面将介绍三种方法。
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()
函数将原列表和按照哪个列表排序的数据合并成一个元组,然后遍历这个元组列表并根据排序规则生成新的列表。
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 库的 DataFrame
和 merge()
函数来实现按另一个列表的顺序重新排列原列表。
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']
以上是三种实现方式,您可以根据需求和数据量选用不同方法。