/ / Warum bekomme ich […], wenn ich in Python eine Liste an dieselbe Liste anhange? - Python, Python-2,7

Warum bekomme ich [...] wenn ich eine Liste an die gleiche Liste in Python angehängt habe? - Python, Python-2.7

Der folgende Code wurde in einem Python 2.7.1-Interpreter ausprobiert.

>>> a = [1, 2, 3]
>>> a.append(a)
>>> a
[1, 2, 3, [...]]
>>> a == a[-1]
True
>>> print a[-1]
[1, 2, 3, [...]]

Kann jemand bitte erklären, was Python hier versucht?

Antworten:

3 für die Antwort № 1

Sie haben eine unendliche verschachtelte Liste in Ihrer Liste erstellt. Da es nicht dargestellt werden kann, [...] erscheint.

Sehen Sie sich an, was passiert, wenn Sie versuchen, jeden Wert zu drucken:

>>> for item in a:
...     print item
...
1
2
3
[1, 2, 3, [...]] # The whole list that we just iterated over :)

Beziehen auf Hier zum weiterlesen.


2 für die Antwort № 2

Sie erstellen im Grunde eine Liste verschachtelter Listen (Listen innerhalb von Listen) und hängen eine Liste an sich selbst an, die eine unendlich verschachtelte Liste erstellt

beispielsweise:

>>> a = [1,2,3]
>>> a.append(a)
>>> a
[1, 2, 3, [...]]
>>>

>>> a[3]
[1, 2, 3, [...]]
>>> a[3][3]
[1, 2, 3, [...]]
>>>

Wenn Sie das tun a[3] Es zeigt die nächste Liste in der verschachtelten Liste a[3][3] Ich bekomme die Liste nach innen a[3] das [...] So porträtiert Python diese Idee

Weitere Informationen und Beispiele zur Erläuterung dieser unendlich verschachtelten Listen Hier


0 für die Antwort № 3

Listen werden den ursprünglichen Listen als Zeiger zugewiesen. Wenn Sie wirklich möchten, dass eine Liste als Element 3 angehängt wird, können Sie eine Kopie wie folgt erstellen:

>>> a.append(a[:])
>>> print a
[1, 2, 3, [1, 2, 3]]

oder wenn Sie die Elemente von wollen averwenden Sie stattdessen:

>>> a = a + a
>>> print a
[1, 2, 3, 1, 2, 3]