在Python中,sort()
方法和 sorted()
函数都提供了一个 key
参数,该参数允许你指定一个函数来确定排序的依据。lambda
是一个创建匿名函数(即没有名字的函数)的快捷方式,它经常与 key
参数一起使用,以提供简单的排序逻辑。
key
参数接收一个函数,这个函数接收一个元素作为输入,并返回一个值,这个值将被用于排序。换句话说,你可以使用 key
参数来告诉 sort()
或 sorted()
如何比较元素。
假设你有一个列表,包含字符串,你想根据字符串的长度来排序:
words = ['apple', 'banana', 'cherry', 'date']
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words) # 输出: ['date', 'apple', 'cherry', 'banana']
在这个例子中,lambda x: len(x)
是一个匿名函数,它接收一个字符串 x
作为输入,并返回该字符串的长度。sorted()
函数使用这个长度值来对列表进行排序。
复杂的排序逻辑
你也可以使用更复杂的 lambda
函数来实现更复杂的排序逻辑。例如,假设你有一个包含元组的列表,你想根据元组的第二个元素进行排序:
items = [(1, 3), (2, 1), (3, 2)]
sorted_items = sorted(items, key=lambda x: x[1])
print(sorted_items) # 输出: [(2, 1), (3, 2), (1, 3)]
在这个例子中,lambda x: x[1]
是一个匿名函数,它接收一个元组 x
作为输入,并返回该元组的第二个元素。sorted()
函数使用这个值来对列表进行排序。
总结
key=lambda
参数允许你以非常灵活的方式对列表进行排序。你可以使用任何可以接收一个元素作为输入并返回一个值的函数作为 key
参数。lambda
函数是一个创建这种简单函数的便捷方式。
另外,补充两点:
1. python列表,元组或字符串的比较逻辑是,假如 A 和 B 是两个列表,元组或字符串,从左至右逐个的对A和B中所有元素比较,当出现第一个不相同的元素时,比较A与B在该位置上元素的大小关系,若A中该元素大于B相同位置的元素,则A > B,否则A < B,当比较到最后一个元素均相同时,此时A = B。
2. 两种sort函数的区别:
list.sort(key = )
sorted.list = sorted(list, key = )