我的意思是,我正在寻找返回较低值的非常短的代码。例如:
a=[1,2,3,4,5,6,7,8,9,10]
b=[1,2,3,4,5,6,7,8]
len(a) = 10
len(b) = 8
if (fill-this-in):
print(lesser-value)
而且我忘了补充一点,如果 b 低于 a,我希望返回 b - 而不是 len(b) - 变量 b。
我的意思是,我正在寻找返回较低值的非常短的代码。例如:
a=[1,2,3,4,5,6,7,8,9,10]
b=[1,2,3,4,5,6,7,8]
len(a) = 10
len(b) = 8
if (fill-this-in):
print(lesser-value)
而且我忘了补充一点,如果 b 低于 a,我希望返回 b - 而不是 len(b) - 变量 b。
打印(分钟(a,b))
你不是很清楚你想要什么,所以有一些替代方案。给定以下两个列表:
a = [1,2,3,4,5,6,7,8,9,10]
b = [1,2,3,4,5,6,7,8]
要打印最短的列表,您可以这样做..
>>> print(min(a, b))
[1, 2, 3, 4, 5, 6, 7, 8]
要获得最短的数字长度,您可以min
选择len()
每个列表中的一个,或者做len(min())
(两者相同,选择您认为最易读的那个)..
>>> print(min( len(a), len(b) ))
# or..
>>> print(len( min(a, b) ))
8
要打印任一列表中的最小值,您可以将列表作为单个参数提供给min()
>>> a.extend(b) # Appends b to a
>>> print a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8]
>>> print(min(a))
1
最后,另一种可能性,总值最低的列表:
>>> max( sum(a), sum(b) )
55
要打印最高的实际列表sum()
,您可以使用三元运算符,例如..
>>> print a if sum(a) > sum(b) else b
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
..虽然我从来没有真正喜欢(或使用)它,而是使用稍长的常规 if/else 语句..
>>> if sum(a) > sum(b):
... print a
... else:
... print b
...
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
如果列表的长度是使它变低的原因(而不是它的值),那么您实际上想要:
min(a, b, key=len)
这只是偶然地等价于
min(a, b)
在给定的示例中。
min()
应该完成你需要的
print(min(a,b))
抬头,min(a, b, key=len)
我认为仅适用于python 2.5及更高版本。
(它不适用于我的带有 python 2.4 的 macbook,但我的 2.5 的 linux 服务器很好)
看来这个答案现在可能已经过时了。我刚刚有同样的问题并找到了这个答案,但没有得到我预期的结果。结果 Min 不会自动返回两个列表中较短的一个(在 2.7 中)。要做到这一点,您必须使用“关键”参数(在 2.5 中引入)(强调添加):
min(iterable[, key]) min(arg1, arg2, *args[, key]) 返回可迭代项中的最小项或两个或多个参数中的最小项。
如果提供了一个位置参数,则可迭代对象必须是非空可迭代对象(例如非空字符串、元组或列表)。返回可迭代项中的最小项。如果提供了两个或多个位置参数,则返回最小的位置参数。
可选的 key 参数指定一个单参数排序函数,类似于 list.sort() 中使用的排序函数。如果提供了 key 参数,则必须采用关键字形式(例如,min(a,b,c,key=func))。
在 2.5 版更改: 添加了对可选键参数的支持
所以在这个例子中,虽然它似乎可以工作(并且在 2.7 中仍然可以),它只是因为整数列表是相同的。但是,如果这些是两个不同的无序列表,那么:
min(a,b)
将返回具有最小第一个整数的列表。
要确保获得两个列表中较短的一个,请使用:
min(a,b, key=len)
以下是你想要的吗?
if len(a) < len(b):
print a
else:
print b
或者,如果您想使用像@Andrew G. Johnson 这样的三元运算符:
print a if len(a) < len(b) else b
PS。请记住,Python 的块不使用大括号,并且它的三元运算符与类 C 语言不同。
我不知道 Python,但对于这样的事情,我会使用三元运算符。
print(length(a) < length(b) ? length(a) : length(b))
需要注意的一点是,如果它们相等,它将打印 length(b)