2016-05-04 5 views
-1
a = {1, 2, 3} < {2, 3, 4, 5} 

print(a) produziert False.Warum gibt {1, 2, 3} <{2, 3, 4, 5} Falsch zurück?

Können Sie mir erklären warum?

Ich dachte, dass a sollte True sein, da die Zahlen in der linken Reihe kleiner sind als die in der richtigen Menge.

+0

Richtig, jetzt, wo das Tagging geklärt ist, bleibt die andere Frage: Was haben Sie erwartet statt zu passieren? –

+0

@MartijnPieters Ich dachte, dass "a" True zurückgeben sollte, da die Zahlen im linken Set kleiner sind als die im richtigen Set. Aber danke, ich habe es jetzt mit deinen Erklärungen verstanden. –

+2

Ich habe das zu Ihrer Frage hinzugefügt; In Zukunft ist es immer besser, Ihre Erwartungen zu erklären. –

Antwort

5

Sie vergleichen Sets, The < Operator auf Sätze Tests, wenn der linke Operand eine echte Teilmenge des rechten Operanden ist, so dass, wenn alle Elemente im ersten Satz in der zweiten Gruppe sind, und, dass der zweite Satz größer ist.

{1, 2, 3} ist keine Untergruppe (ordnungsgemäß oder nicht) des {2, 3, 4, 5}-Satzes, da 1 nicht im größeren Satz ist.

Siehe set documentation:

set < other
Prüft, ob der Satz eine echte Teilmenge der anderen ist, das heißt, set <= other and set != other.

Kein anderer Vergleich der Werte findet statt; Sätze wie Wörterbücher sind nicht "bestellbar", so dass es nicht klar ist, welche der Werte in einem Satz (Schlüssel oder Schlüssel/Wert-Paare in einem Wörterbuch) mit welchen Werten in dem anderen Satz verglichen werden sollen.

+0

Könnte eine Erwähnung wert sein, dass, obwohl * scheint * mit Listen zu arbeiten (gibt die gewünschte Antwort mit diesen Zahlen), es tut immer noch nicht, was das OP scheint –

+0

@de_Knight: Wir wissen nicht, was das OP erwartet, überhaupt. Die Erwartung, dass dies wie für Listen funktioniert, ist an dieser Stelle reine Vermutung. –

+0

"Ich dachte, dass" a "True zurückgeben sollte, da die Zahlen im linken Set kleiner sind als die im richtigen Set." jetzt machen wir;) –