Wenn Sie ('aa')
schreiben Sie einfach nur einen String erstellen, so ist es offensichtlich, dass in
Zeichen überprüfen wird und Bewertung als True
. Sie können dies überprüfen mit
>>> x = ('aa')
>>> print(type(x))
<class 'str'>
Wie in der Dokumentation gesehen tuple syntax, um ein einzelnes Element zu erstellen Tupel Sie ein Komma erforderlich, das heißt ('aa',)
. In diesem Fall führt die Überprüfung auf 'a'
in Ihrem Tupel zu False
wie erwartet.
Wenn Sie tatsächlich schaffen einen Satz mit
x = set('aa')
das ist, was ich denke, Sie haben, ist ein Satz mit den einzigartigen Charakteren in Ihrem String als Elemente erstellt, da Ihre übergebenen String als eine gesehen iterable für die Menge, um Elemente aus (Zeichen) zu erhalten. Daher wird Ihr Satz {'a'}
, also wird in
als True
ausgewertet. Im Gegenteil, wenn Sie einen Satz mit Satz Literalsyntax als False
x = {'aa'}
ein Satz mit Ihrem einzigen String erstellt 'aa'
und in
evaluieren erstellen. Es hängt also davon ab, wie Sie eine Menge von 'aa'
initialisieren.
>>> set('dog')
{'d', 'g', 'o'}
>>> {'dog'}
{'dog'}
'('aa')' ist eine Zeichenfolge in Klammern, es ist weder eine Menge noch ein Tupel. Also ist das Zeichen "a" in "aa" –
'('aa') == 'aa'' Sie müssen' ('aa',) 'für ein einzelnes Tupel verwenden. – styvane
Einzelelement-Tupel sollten am Ende ein Komma haben. Zum Beispiel, '('aa',)' oder einfach ''aa',' – thefourtheye