理解涉及 min 函数的列表理解

Understanding list comprehension involving min function

我精通list comprehension

但是,我无法理解下面的语句:

min((-len(list), list[-1] - list[0] + 1) for list in [[0, 4], [1, 2]])[1]

我只理解 for list in [[0, 4], [1, 2]] 迭代列表的部分。

因此,list 将依次为 [0,4][1,2]。对于第一个,元组将是 (-2, 5) (5 == 4 - 0 + 1),对于第二个,元组将是 (-2, 2) (2 == 2 - 1 + 1 ).其中最小的是 (-2,2),所以这就是 returned.

所以,这是试图找到最长的子列表,并且 return 列表中第一个元素和最后一个元素之间的最小差异。

相当于下面的代码片段:

min((-len(list), list[-1] - list[0] + 1) for list in [[0, 4], [1, 2]])[1]
newlist = list()
for list in [[0, 4], [1, 2]]:
    newlist.append((-len(list), list[-1] - list[0] + 1))
min = min(newlist)
output = min[1]