Eine Liste ist veränderbar, dh Sie können ihren Inhalt ändern:
>>> x =[1,2]>>> x.append(3)>>> x
[1,2,3]
während Tupel nicht sind:
>>> x =(1,2)>>> x
(1,2)>>> x.append(3)Traceback(most recent call last):File"<stdin>", line 1,in<module>AttributeError:'tuple' object has no attribute 'append'
Der andere Hauptunterschied besteht darin, dass ein Tupel hashbar ist, was bedeutet, dass Sie es unter anderem als Schlüssel für ein Wörterbuch verwenden können. Beispielsweise:
>>> x =(1,2)>>> y =[1,2]>>> z ={}>>> z[x]=3>>> z
{(1,2):3}>>> z[y]=4Traceback(most recent call last):File"<stdin>", line 1,in<module>TypeError: unhashable type:'list'
Beachten Sie, dass Sie, wie viele Leute bereits betont haben, Tupel hinzufügen können. Beispielsweise:
>>> x =(1,2)>>> x +=(3,)>>> x
(1,2,3)
Dies bedeutet jedoch nicht, dass Tupel veränderlich sind . Im obigen Beispiel wird ein neues Tupel erstellt, indem die beiden Tupel als Argumente addiert werden. Das ursprüngliche Tupel wird nicht geändert. Beachten Sie Folgendes, um dies zu demonstrieren:
>>> x =(1,2)>>> y = x
>>> x +=(3,)>>> x
(1,2,3)>>> y
(1,2)
Wenn Sie dasselbe Beispiel mit einer Liste yerstellen würden , würde dies ebenfalls aktualisiert:
>>> x =[1,2]>>> y = x
>>> x +=[3]>>> x
[1,2,3]>>> y
[1,2,3]
gute und doch einfache Beispiele, um die Unterschiede aufzulisten. Vielen Dank!
Dr. Essen
8
Ein interessanter Unterschied:
lst=[1]print lst // prints [1]print type(lst)// prints <type 'list'>
notATuple=(1)print notATuple // prints 1print type(notATuple)// prints <type 'int'>^^ instead of tuple(expected)
Ein Komma muss in einem Tupel enthalten sein, auch wenn es nur einen einzigen Wert enthält. zB (1,)statt (1).
Danke dir. Das habe ich gesucht. Der Code, den ich sah, hatte eine (Liste1 + Liste2 + Liste3) und gab eine Liste zurück, kein Tupel.
HuckIt
4
Sie sind keine Listen, sie sind eine Liste und ein Tupel. Informationen zu Tupeln finden Sie im Python-Tutorial. Während Sie Listen mutieren können, ist dies mit Tupeln nicht möglich.
In[1]: x =(1,2)In[2]: x[0]=3---------------------------------------------------------------------------TypeErrorTraceback(most recent call last)/home/user/<ipython console>in<module>()TypeError:'tuple' object does not support item assignment
Es gibt keine Listen, die in "runde" Klammern eingeschlossen sind, sie sind Tupel! Aber du meinst wahrscheinlich das Richtige. :P
Gandaro
1
Von (und) eingeschlossene Listen sind Tupel . Ich bin verwirrt, sind sie Listen oder Tupel?
Juliomalegria
@ julio.alegria Ich denke, was @FlopCoder schreiben wollte, war " Artikel eingeschlossen von( und )sind tuples, jene eingeschlossen durch [und ]sind lists.“
(i for i in ...)
und[i for i in ...]
.Antworten:
Eckige Klammern sind Listen, während Klammern Tupel sind .
Eine Liste ist veränderbar, dh Sie können ihren Inhalt ändern:
während Tupel nicht sind:
Der andere Hauptunterschied besteht darin, dass ein Tupel hashbar ist, was bedeutet, dass Sie es unter anderem als Schlüssel für ein Wörterbuch verwenden können. Beispielsweise:
Beachten Sie, dass Sie, wie viele Leute bereits betont haben, Tupel hinzufügen können. Beispielsweise:
Dies bedeutet jedoch nicht, dass Tupel veränderlich sind . Im obigen Beispiel wird ein neues Tupel erstellt, indem die beiden Tupel als Argumente addiert werden. Das ursprüngliche Tupel wird nicht geändert. Beachten Sie Folgendes, um dies zu demonstrieren:
Wenn Sie dasselbe Beispiel mit einer Liste
y
erstellen würden , würde dies ebenfalls aktualisiert:quelle
Ein interessanter Unterschied:
Ein Komma muss in einem Tupel enthalten sein, auch wenn es nur einen einzigen Wert enthält. zB
(1,)
statt(1)
.quelle
Sie sind keine Listen, sie sind eine Liste und ein Tupel. Informationen zu Tupeln finden Sie im Python-Tutorial. Während Sie Listen mutieren können, ist dies mit Tupeln nicht möglich.
quelle
Ein anderer Unterschied zwischen Klammern und Klammern besteht darin, dass eckige Klammern ein Listenverständnis beschreiben können, z
[x for x in y]
Während die entsprechenden parenthetic Syntax gibt ein Tupel - Generator :
(x for x in y)
Sie können ein Tupelverständnis erhalten, indem Sie:
tuple(x for x in y)
Siehe: Warum gibt es in Python kein Tupelverständnis?
quelle
Das erste ist eine Liste, das zweite ist ein Tupel. Listen sind veränderlich, Tupel nicht.
Schauen Sie sich den Abschnitt Datenstrukturen des Lernprogramms und den Abschnitt Sequenztypen der Dokumentation an.
quelle
Kommagetrennte Elemente, die von
(
und eingeschlossen)
sindtuple
, sind s, diejenigen, die von[
und eingeschlossen sind ,]
sindlist
s.quelle
:P
(
und)
sindtuple
s, jene eingeschlossen durch[
und]
sindlist
s.“