つまり、より低い値を返す非常に短いコードを探しているということです。例えば:
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 を返すことを忘れていました。
つまり、より低い値を返す非常に短いコードを探しているということです。例えば:
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 を返すことを忘れていました。
print(最小(a, b))
何が欲しいのかはっきりしていないので、いくつかの代替案があります。次の 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]
リストの長さが(値ではなく)それを低くするものである場合、実際には次のことが必要です。
min(a, b, key=len)
これは偶然にのみ同等です
min(a, b)
与えられた例では。
min()
必要なことを達成する必要があります
print(min(a,b))
この回答は現在古くなっているようです。これと同じ質問があり、この回答を見つけましたが、期待した結果が得られませんでした。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)
注意してください、 min(a, b, key=len)
python 2.5以降でのみ動作すると思います。
(python 2.4 の macbook では動作しませんが、2.5 の linux サーバーでは問題ありません)
以下はあなたが望むものですか?
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))
これについて注意すべきことの1つは、それらが等しい場合、長さ(b)が出力されることです。