29

つまり、より低い値を返す非常に短いコードを探しているということです。例えば:

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 よりも小さい場合、len(b) ではなく変数 b を返すことを忘れていました。

4

8 に答える 8

51
print(最小(a, b))
于 2009-01-11T02:30:58.283 に答える
29

何が欲しいのかはっきりしていないので、いくつかの代替案があります。次の 2 つのリストがあるとします。

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

いずれかのリストの最小値を出力するには、リストを 1 つの引数として指定します。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]
于 2009-01-11T04:21:26.313 に答える
5

リストの長さが(値ではなく)それを低くするものである場合、実際には次のことが必要です。

min(a, b, key=len)

これは偶然にのみ同等です

min(a, b)

与えられた例では。

于 2009-01-11T04:49:03.640 に答える
4

min()必要なことを達成する必要があります

print(min(a,b))
于 2009-01-11T02:30:30.687 に答える
1

この回答は現在古くなっているようです。これと同じ質問があり、この回答を見つけましたが、期待した結果が得られませんでした。Min は、2 つのリストのうち短い方を自動的に返さないことがわかりました (2.7)。これを取得するには、'key' 引数 (2.5 で導入) を使用する必要があります (強調を追加):

min(iterable[, key]) min(arg1, arg2, *args[, key]) iterable の最小の項目、または 2 つ以上の引数の最小の項目を返します。

位置引数を 1 つ指定する場合、iterable は空でない iterable (空でない文字列、タプル、またはリストなど) でなければなりません。iterable の最小のアイテムが返されます。2 つ以上の位置引数が指定されている場合は、位置引数のうち最小のものを返します。

オプションのキー引数は、list.sort() で使用されるような 1 つの引数の順序付け関数を指定します。キー引数を指定する場合は、キーワード形式にする必要があります (たとえば、min(a,b,c,key=func))。

バージョン 2.5 で変更: オプションのキー引数のサポートが追加されました

したがって、この例では機能しているように見えますが (2.7 でも機能します)、整数のリストが同じであるためにのみ機能します。ただし、これらが 2 つの異なる順序付けられていないリストである場合は、次のようになります。

min(a,b) 

最初の整数が最も小さいリストを返します。

2 つのリストのうち短い方を確実に取得するには、次を使用します。

min(a,b, key=len)
于 2016-11-02T17:32:18.357 に答える
1

注意してください、 min(a, b, key=len)python 2.5以降でのみ動作すると思います。

(python 2.4 の macbook では動作しませんが、2.5 の linux サーバーでは問題ありません)

于 2009-01-14T03:56:06.677 に答える
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 のような言語とは異なることに注意してください。

于 2009-01-11T02:43:38.103 に答える
-3

私はPythonを知りませんが、このようなものには三項演算子を使用します.

print(length(a) < length(b) ? length(a) : length(b))

これについて注意すべきことの1つは、それらが等しい場合、長さ(b)が出力されることです。

于 2009-01-11T02:38:50.937 に答える