Frage

Ich meine, ich suche nach wirklich kurzem Code, der den niedrigeren Wert zurückgibt. zum Beispiel:

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)

Und ich habe vergessen hinzuzufügen, dass wenn B niedriger als A ist, ich möchte, dass B zurückkehren wird - nicht Len (b) - die Variable b.

War es hilfreich?

Lösung

print(min(a, b))

Andere Tipps

Sie sind nicht sehr klar über das, was Sie wollen, also einige Alternativen. Angesichts der folgenden zwei Listen:

a = [1,2,3,4,5,6,7,8,9,10]
b = [1,2,3,4,5,6,7,8]

Um die kürzeste Liste zu drucken, können Sie einfach tun ..

>>> print(min(a, b))
[1, 2, 3, 4, 5, 6, 7, 8]

Um die kürzeste Länge als Zahl zu erhalten, können Sie entweder min das len() von jeder Liste oder tun len(min()) (Beide sind identisch, wählen Sie, welche Sie immer am lesbarsten finden) ..

>>> print(min( len(a), len(b) ))
# or..
>>> print(len( min(a, b) ))
8

Um den niedrigsten Wert in beiden Liste zu drucken, können Sie die Liste als einzelnes Argument angeben 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

Schließlich eine andere Möglichkeit, die Liste, die insgesamt die niedrigsten Werte hat:

>>> max( sum(a), sum(b) )
55

Um die tatsächliche Liste mit der höchsten zu drucken sum(), Sie könnten entweder den ternären Operator verwenden, wie ..

>>> print a if sum(a) > sum(b) else b
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Obwohl ich es nie wirklich gemocht (oder benutze) habe, verwendete ich die leicht längeren, regulären wenn/sonst Aussagen.

>>> if sum(a) > sum(b):
...     print a
... else:
...     print b
... 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Wenn die Länge der Liste sie niedriger macht (nicht ihre Werte), möchten Sie tatsächlich:

min(a, b, key=len)

das ist nur zufällig gleichbedeutend mit

min(a, b)

im angegebenen Beispiel.

min() sollte erreichen, was Sie brauchen

print(min(a,b))

Kopf hoch, min(a, b, key=len) funktioniert nur in Python 2.5 und up, denke ich.

(Es funktioniert nicht auf meinem MacBook mit Python 2.4, aber mein Linux -Server mit 2.5 ist in Ordnung)

Es scheint, dass diese Antwort jetzt möglicherweise veraltet ist. Ich hatte gerade die gleiche Frage und fand diese Antwort, erhielt aber nicht die Ergebnisse, die ich erwartet hatte. Es stellt sich heraus, dass Min nicht automatisch die kürzere der beiden Listen (in 2.7) zurückgibt. Um zu erhalten, dass Sie das "Schlüssel" -Argument verwenden müssen (eingeführt in 2.5) (Hervorhebung hinzugefügt):

min (iterable [, Schlüssel]) min (arg1, arg2, *args [, key]) Gibt den kleinsten Element in einem iterablen oder kleinsten von zwei oder mehr Argumenten zurück.

Wenn ein Positionsargument bereitgestellt wird, muss iterbar ein nicht leerer iterierbar sein (z. B. eine nicht leere Zeichenfolge, Tupel oder Liste). Der kleinste Gegenstand im iterablen wird zurückgegeben. Wenn zwei oder mehr Positionsargumente vorgelegt werden, wird die kleinste der Positionsargumente zurückgegeben.

Das optionale Schlüsselargument gibt eine Ein-Argument-Bestellfunktion wie die für die Liste verwendet.sort () an. Das Schlüsselargument muss bei der Lieferung in Schlüsselwortform (z. B. min (a, b, c, key = func)) sein.

In Version 2.5 geändert: Unterstützung für das optionale Schlüsselargument hinzugefügt

Obwohl es in diesem Beispiel zu funktionieren scheint (und immer noch in 2.7), ist es nur, weil die Liste der Ganzzahlen gleich ist. Wenn es sich jedoch um zwei verschiedene nicht ordnungsgemäße Listen handelte, dann:

min(a,b) 

würde die Liste mit der niedrigsten zurückgeben Erste ganze Zahl.

Verwenden Sie: Verwenden Sie, um sicher zu sein, dass Sie die kürzeren von zwei Listen erhalten:

min(a,b, key=len)

Ist das folgende, was Sie wollen?

if len(a) < len(b):
    print a
else:
    print b

Alternativ, wenn Sie den ternären Operator wie @Andrew G. Johnson verwenden möchten:

print a if len(a) < len(b) else b

Ps. Denken Sie daran, dass Python keine Klammern für seine Blöcke verwendet und dass sein ternärer Operator sich von C-ähnlichen Sprachen unterscheidet.

Ich kenne Python nicht, aber für so etwas würde ich einen ternären Operator benutzen.

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

Eine Sache, die zu beachten ist, dass wenn sie gleich sind, druckt die Länge (b)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top