【发布时间】:2020-05-31 20:46:30
【问题描述】:
我无法理解 lambda 函数,我总是把自己弄糊涂,因为我想太多了,这是我的问题:
nm = input().split()
n = int(nm[0])
m = int(nm[1])
arr = []
for _ in range(n):
arr.append(list(map(int, input().rstrip().split())))
k = int(input())
arr.sort(key=lambda x: x[1])
代码的作用现在并不重要,但是如果我打印我的数组(以我的示例为例),我会收到以下输出:
[[7, 1, 0], [10, 2, 5], [6, 5, 9], [9, 9, 9], [1, 23, 12]]
如您所见,它是一个多维数组,现在我想根据每个列表的第二个元素对其进行排序:
arr.sort(key=lambda x: x[1])
所以我有列表,我想用键 lambda 和变量 x 对其进行排序:x[1] 我的变量 x 不应该是多维数组吗?如果我说 x = arr 不一样吗? 这个函数究竟是如何知道我想对每个列表中位于 x[1] 位置的所有元素进行排序的,我原以为使用 x[1] 只会是多维数组中的第二个数组:
[[1, 2, 3], **[4, 2, 6]** ...
我是初学者,所以我希望初学者能友好地回答我的问题, 干杯!
【问题讨论】:
-
“我的变量 x 不应该是多维数组” - 不。这将使
key完全无法使用。 -
不,
x不是arr,而是arr中的每个元素,就像使用for循环时一样。
标签: python function sorting lambda