📅  最后修改于: 2023-12-03 15:19:07.360000             🧑  作者: Mango
在 Python 中,我们可以使用 sorted()
函数或者 sort()
方法来对一个列表进行排序。它们都接受一个可选的参数 key
,用于指定排序的规则。
如果我们想要使用定义的顺序对一个列表进行排序,可以如下操作。
# 定义排序规则
order = ['apple', 'banana', 'orange']
# 定义待排序列表
fruits = ['apple', 'orange', 'banana', 'banana', 'orange', 'apple', 'orange']
# 使用 lambda 表达式将每个元素转换为对应的序号
fruits_sorted = sorted(fruits, key=lambda x: order.index(x))
print(fruits_sorted)
# 输出:['apple', 'apple', 'banana', 'banana', 'orange', 'orange', 'orange']
以上代码中,我们首先定义了排序规则 order
,然后利用 lambda 表达式将待排序列表中的每个元素转换为它在排序规则中对应的序号来进行排序。
除了使用 lambda 表达式,我们还可以自定义一个函数来实现排序规则的转换。
def convert_to_index(value):
try:
return order.index(value)
except ValueError:
return len(order)
fruits_sorted = sorted(fruits, key=convert_to_index)
print(fruits_sorted)
# 输出:['apple', 'apple', 'banana', 'banana', 'orange', 'orange', 'orange']
以上代码中,我们定义了一个 convert_to_index()
函数,它接受一个元素值,返回该值在排序规则中对应的序号。如果该值不存在于排序规则中,则返回排序规则的长度,即将这个元素放到最后。
最后,我们对待排序列表使用 sorted()
函数,将排序规则转换函数 convert_to_index()
作为参数传入即可。
除了 sorted()
函数外,我们还可以使用列表的 sort()
方法来进行排序,使用方法与 sorted()
函数类似。
fruits.sort(key=convert_to_index)
print(fruits)
# 输出:['apple', 'apple', 'banana', 'banana', 'orange', 'orange', 'orange']
总的来说,Python 提供了非常灵活的排序机制,我们可根据自己的需求定义排序规则,以实现多样化的排序功能。