5
a=[[1,0,1,2,1,1,1,3111111],[31,1,4,51,1,1,1],[1,1,6,7,8]]
print min(a[0],a[1],a[2])

以下代码返回[1, 0, 1, 2, 1, 1, 1, 3111111]. 不确定默认键是什么以及根据什么逻辑返回?

另外,我实际上是在尝试从列表中的这些列表中找到最小长度。

我写了这个min(len(a[0]),len(a[1]),len(a[2]))。这可以做得更好吗?

4

3 回答 3

17

几个选项:

a = [[1,0,1,2,1,1,1,3111111], [31,1,4,51,1,1,1], [1,1,6,7,8]]

print min(a, key=len)
# [1, 1, 6, 7, 8]

print len(min(a, key=len))
# 5

print min(map(len, a))
# 5
于 2013-09-11T12:50:07.700 回答
13

是的,您可以使用map迭代内部列表来创建长度列表,然后通过以下方式获得最小值min

>>> a=[[1,0,1,2,1,1,1,3111111],[31,1,4,51,1,1,1],[1,1,6,7,8]]
>>> min(map(len, a))
 5
于 2013-09-11T12:48:54.683 回答
2

你可以把它写成一个循环来创建一个列表,而不必总是输入它:

min([len(x) for x in a])

无论一个列表中有多少个列表,这都会完成您想要

于 2013-09-11T12:52:26.803 回答