Python - Prüfen, ob mehrere Variablen den gleichen Wert haben
Habe ich eine Reihe von drei Variablen x, y, z und ich wollen, um zu überprüfen, ob Sie alle den gleichen Wert. In meinem Fall, wird der Wert entweder von 1 oder 0, aber ich brauche nur zu wissen, ob Sie alle das gleiche. Derzeit bin ich mit
if 1 == x and 1 == y and 1 == z:
sameness = True
Suche nach der Antwort, die ich gefunden habe:
if 1 in {x, y, z}:
Jedoch, diese arbeitet als
if 1 == x or 1 == y or 1 == z:
atleastOneMatch = True
Ist es möglich zu überprüfen, ob 1 ist in jedem: x -, y -, und z?
Besser noch, gibt es eine genauere Möglichkeit, zu überprüfen, einfach wenn x -, y -, und z den gleichen Wert?
(falls es eine Rolle spielt, ich benutze python 3)
Eine Notiz von Vorsicht über diese Techniken; durch den Versuch zu machen den code kürzer, Sie verlieren die Fähigkeit zu einem Kurzschluss der Ausdruck. Dies vielleicht keine Auswirkungen mit einfachen Variablen, aber wenn Sie über die Funktion Aufrufe, es könnte wichtig sein.
InformationsquelleAutor Nevermore | 2016-05-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie eine beliebige Sequenz, verwenden Sie die
all()
- Funktion mit einem generator-Ausdruck:sonst, verwenden Sie einfach
==
auf alle drei Variablen:Wenn Sie nur brauchte, um zu wissen, wenn Sie alle den gleichen Wert (egal welcher Wert das ist), verwenden Sie:
oder
aber das erzeugt zwei neue Listen.
Wow. Ich kannte das. Können Sie bitte erklären, wie?
slicing eine Liste gibt eine neue Liste zurück-Objekt.
values[1:]
erstellt ein neues list-Objekt mit den Referenzwerten für die Indizes 1 und bis über kopiert. Dasselbe für dievalues[:-1]
.Es bekam. Danke.
InformationsquelleAutor Martijn Pieters
Um zu überprüfen, ob Sie alle das gleiche (entweder 1 oder 2):
Den Klammern sind optional, aber ich finde, es verbessert die Lesbarkeit
InformationsquelleAutor Neapolitan
Wie über dieses?
InformationsquelleAutor Vedang Mehta
Könnten Sie etwas ähnliches zu dem, was Sie haben:
Diese ermöglicht eine beliebige Anzahl von Variablen. Zum Beispiel:
Hinweis: Erstellen eines Satzes bedeutet, dass jede variable muss gehasht und der Hash-Werte gespeichert werden müssen, aber
all()
mit einem generator-Ausdruck ist Kurzschluss und verfolgt, nur zwei Werte gleichzeitig. Daher, neben der Lesbarkeit, der generator-Ausdruck ist effizienter.set
Verhalten, aber ein bisschen verschleiert die Absicht, meinst du nicht?Zum Glück, der name der Variablen macht die Absicht deutlich. Sobald die Absicht ist klar, es ist leicht zu sehen, wie der code funktioniert.
Erstellen eines Satzes ist nicht ohne Kosten; jeder Wert Hash (neben der Gleichheit tests), sowie die Zuweisung von Speicher für das Objekt selbst.
all()
mit einem generator-Ausdruck oder eine Kette von==
short circuit, so dass nicht alle Werte getestet werden müssen, wenn mindestens ein Wert ist nicht gleich dem anderen.Ja. Ich wurde ein Hinweis Hinzugefügt, dass Wirkung.
InformationsquelleAutor zondo
Einen anderen Weg:
InformationsquelleAutor cuonglm
Sicher:
entspricht
Wenn Sie haben einen beliebigen (von null verschiedenen) Anzahl von Werten zu vergleichen:
InformationsquelleAutor das-g