Python 为什么排序(key=lambda x:x[0])按列表中每个元素的第一个值排序?

Python 为什么排序(key=lambda x:x[0])按列表中每个元素的第一个值排序?,python,Python,为什么在这个解决方案中interval.sort(key=lambda x:x[0])按列表中每个元素的起始值排序?x[0]不是仅仅指列表中的第一个元素吗?当您有一个列表时,您可以通过比较元素对其排序。通常,这是直截了当的。如果你有一份清单 def can_attend_all_appointments(intervals): intervals.sort(key=lambda x: x[0]) return False def main(): print(&quo

为什么在这个解决方案中interval.sort(key=lambda x:x[0])按列表中每个元素的起始值排序?x[0]不是仅仅指列表中的第一个元素吗?当您有一个列表时,您可以通过比较元素对其排序。通常,这是直截了当的。如果你有一份清单

def can_attend_all_appointments(intervals):

    intervals.sort(key=lambda x: x[0])

    return False

def main():
    print("Can attend all appointments: " + str(can_attend_all_appointments([[1, 4], [2, 5], [7, 9]])))
    print("Can attend all appointments: " + str(can_attend_all_appointments([[6, 7], [2, 4], [8, 12]])))
    print("Can attend all appointments: " + str(can_attend_all_appointments([[4, 5], [2, 3], [3, 6]])))


main()
通过数字的自然顺序来比较值是有意义的。但是,如何仅通过比较列表的第一个元素来比较列表呢?或者,如果我有一个字符串列表,并且我想按每个字符串中的字符数进行排序,以使字符数最少的字符串排在第一位呢。在本例中,我们希望提供一个密钥

该键告诉python使用元素的哪个方面来比较两个值。因此,如果我们提供
len
作为键,我们将比较它们的长度。如果我们提供
x[0]
,我们将比较它们的第一个元素。因此,键
x[0]
告诉python使用每个列表的第一个元素彼此比较

在使用键
x[0]
的示例中,Python将比较这两个值

[1, 2, 8, 7, 3, 4]

通过它们的第一个元素,所以
[1,4]<[2,5]
,因为
1<2

这里表示每个子列表的第一个元素,lambda函数应用于每个元素
[1, 4], [2, 5]