Verwendung der IF ALL-Anweisung in Python [duplizieren]

9

Ich habe eine Funktion namens checker (nums), die ein Argument hat, das später eine Liste erhält. Was ich mit dieser Liste machen möchte, ist zu überprüfen, ob jedes andere Element größer oder gleich dem vorherigen ist. Beispiel: Ich habe eine Liste [1, 1, 2, 2, 3] und ich muss prüfen, ob es die Bedingung erfüllt. Da dies der Fall ist, sollte die Funktion True

zurückgeben

Mein Code:

%Vor%

Dies wird nur einmal ausgeführt und gibt True zurück, wenn die erste Bedingung zutrifft. Ich habe eine Erklärung gesehen, wenn alle und unsicher sind, wie man es benutzt.

    
LaurentiuS 19.02.2018, 15:11
quelle

3 Antworten

16

Ihre Funktion kann folgendermaßen reduziert werden:

%Vor%

Erläuterung

  • zip durchläuft seine Argumente parallel, d. h. nums[0] & amp; nums[1] werden abgerufen, dann nums[1] & amp; nums[2] etc.
  • i <= j führt den tatsächlichen Vergleich durch
  • Der Generatorausdruck in () stellt sicher, dass jeder Wert der Bedingung, d. h. True oder False , einzeln extrahiert wird. Dies nennt man faule Auswertung .
  • all prüft einfach alle Werte auf True . Auch das ist faul. Wenn einer der Werte, die getreu dem Ausdruck des Generators extrahiert werden, False ist, schließt er kurz und gibt False zurück.
jpp 19.02.2018, 15:13
quelle
8

Ihr Code kann tatsächlich auf die Überprüfung reduziert werden, ob nums sortiert ist, z. B.

%Vor%

Dies entspricht genau Ihren Erwartungen, z. B.

%Vor%     
Jonas Adler 19.02.2018 15:19
quelle
3

Ähnliche Lösung für @jp_data_analysis mit more_itertools.windowed

%Vor%

Und zu wissenschaftlichen Zwecken (nicht empfohlener Code), hier ist ein funktionellerer Ansatz

%Vor%     
jamylak 19.02.2018 15:35
quelle

Tags und Links