Die äußeren Klammern gruppieren nur runde Klammern. Sie benötigen ein Komma hinzufügen, um das äußere Gehäuse ein Tupel zu machen:
a = (('x','y'),)*4
print(a)
# (('x', 'y'), ('x', 'y'), ('x', 'y'), ('x', 'y'))
Für Zusammenhang wäre es nicht sinnvoll, ein Tupel zu erhalten, während f = (x + y)
tun, zum Beispiel. mehr erfordern als nur eine einfache mult
a = (5) # integer
a = (5,) # tuple
a = 5, # tuple, parens are not compulsory
Auf einer Seite zur Kenntnis, würde Artikel über verschachtelte Container Duplizieren:
Um ist in der Regel erforderlich, um eine Singleton Tupel, ein Komma zu definieren. Betrieb. Betrachten Sie Ihre erste Operation zum Beispiel:
>>> a = [['x', 'y']]*3
>>> # modify first item
...
>>> a[0][0] = 'n'
>>> a
[['n', 'y'], ['n', 'y'], ['n', 'y']]
Es gibt im Wesentlichen kein erstes Element - die Mutter Liste enthält nur eine Liste Objekt in verschiedenen Indizes dupliziert. Dies ist möglicherweise nicht besonders besorgniserregend für Tupel, da sie unveränderlich sind.
Betrachten Sie das richtigere Rezept:
>>> a = [['x', 'y'] for _ in range(3)]
>>> a[0][0] = 'n'
>>> a
[['n', 'y'], ['x', 'y'], ['x', 'y']]
Dank. Aber was ist der Grund für diesen kleinen Unterschied? – muazfaiz
Dies ist eine Unterscheidung zwischen geschlossenen Klammern, die als Klammer verwendet werden (zum Beispiel "(5) => 5") und einem Tupel. –
Beachten Sie, dass das Endergebnis ein Tupel ist, das vier Referenzen auf dasselbe Tupel enthält (id (a [0]) == id (a [1]) 'ergibt 'True'). Tupel sind unveränderlich, also spielt es keine Rolle, aber wenn Sie vier gleiche Listen in Ihrem Tupel hatten und eines änderten, könnten die Ergebnisse überraschend sein. –