我的意思是, 我正在寻找返回较低值的真正短代码。 例如:
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。
答案 0 :(得分:34)
print(min(a, b))
答案 1 :(得分:28)
你并不是很清楚自己想要什么,所以有些选择。给出以下两个列表:
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]
答案 2 :(得分:5)
如果列表的长度是降低它的值(不是它的值),那么你实际上想要:
min(a, b, key=len)
只是偶然相当于
min(a, b)
在给定的例子中。
答案 3 :(得分:4)
min()
应该完成你需要的东西
print(min(a,b))
答案 4 :(得分:1)
抬头,min(a, b, key=len)
仅适用于python 2.5及以上版本。
(它不能用我的macbook上的python 2.4,但我的linux服务器2.5很好)
答案 5 :(得分:1)
现在看来这个答案可能已经过时了。我刚才有同样的问题并找到了答案,但没有得到我预期的结果。结果Min不会自动返回两个列表中较短的一个(在2.7中)。为此,你必须使用'key'参数(在2.5中引入)(强调添加):
min(iterable [,key])min(arg1,arg2,* args [,key])返回最小的 可迭代中的项或两个或多个参数中的最小值。
如果提供了一个位置参数,则iterable必须是非空的 iterable(例如非空字符串,元组或列表)。最小的 返回iterable中的项目。 如果两个或多个位置参数 如果提供,则返回最小的位置参数。
可选键参数指定单参数排序函数 就像用于list.sort()的那样。必须提供关键参数(如果提供) 以关键字形式(例如,min(a,b,c,key = func))。
在2.5版中更改:添加了对可选键参数的支持
所以在这个例子中,尽管它似乎有用(并且仍然在2.7中),但它只是因为整数列表是相同的。但是,如果这些是两个不同的非有序列表,那么:
min(a,b)
将返回具有最低第一个整数的列表。
为了确保获得两个列表中较短的一个,请使用:
min(a,b, key=len)
答案 6 :(得分:0)
以下是你想要的吗?
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语言不同。
答案 7 :(得分:-3)
我不知道Python但是对于这样的事情,我会使用三元运算符。
print(length(a) < length(b) ? length(a) : length(b))
有一点需要注意的是,如果它们相等,则会打印长度(b)