Python: Was ist der Unterschied zwischen (1,2,3) und [1,2,3], und wann soll ich je benutzen?

stimmen
44

An vielen Orten, (1,2,3)und [1,2,3]können untereinander ausgetauscht werden.

Wann soll ich das eine oder andere verwenden, und warum?

Veröffentlicht am 05/08/2008 um 08:18
quelle vom benutzer
In anderen Sprachen...                            


15 antworten

stimmen
31

Aus dem Python FAQ :

Listen und Tupeln, während in vieler Hinsicht ähnlich, sind in grundsätzlich verschiedenen Arten verwendet. Tupeln kann man sich als Pascal Aufzeichnungen oder C structs ähnlich ist; sie sind kleine Sammlungen von verwandten Daten, die von verschiedenen Typen sein, die auf als Gruppe betrieben werden. Zum Beispiel kann ein Koordinatenkartesischen wird in geeigneter Weise als ein Tupel von zwei oder drei Zahlen dargestellt.

Listen, auf der anderen Seite, sind eher wie Arrays in anderen Sprachen. Sie neigen dazu, eine unterschiedliche Anzahl von Objekten zu halten alle haben die gleiche Art und die auf einer nach dem anderen betrieben werden.

Im Allgemeinen vereinbarungs würden Sie nicht eine Liste oder ein Tupel nur auf der Grundlage seiner (im) Veränderlichkeit wählen. Sie würden ein Tupel für kleine Sammlungen von völlig verschiedenen Daten, in dem eine ausgewachsene Klasse für Sammlungen von jeder vernünftigen Größe wäre zu Schwergewicht, und eine Liste zu wählen, wo Sie eine homogene Gruppe von Daten.

Beantwortet am 05/08/2008 um 14:22
quelle vom benutzer

stimmen
19

Die Liste [1,2,3] ist dynamisch und flexibel, aber die Flexibilität kommt mit einer Geschwindigkeit Kosten.

Das Tupel (1,2,3) ist festgelegt (unveränderlich) und damit schneller.

Beantwortet am 05/08/2008 um 08:27
quelle vom benutzer

stimmen
11

Tupeln ist eine schnelle \ flexible Art und Weise zu erstellen Verbunddatentypen. Listen sind Container für, na ja, Listen von Objekten.

Zum Beispiel würden Sie eine Liste zu speichern, eine Liste der Schüler Details in einer Klasse.

Jeder Schüler Detail in dieser Liste kann eine 3-Tupel enthält, deren Rollennummer, Namen und Testergebnis.

`[(1,'Mark',86),(2,'John',34)...]`

Auch, weil Tupel unveränderlich sind, können sie als Schlüssel in Wörterbücher verwendet werden.

Beantwortet am 07/08/2008 um 12:21
quelle vom benutzer

stimmen
7

Der Begriff der Tupeln sind sehr ausdrucksvoll:

  • Pragmatisch (sie sind für das Ein- und Auspacken Werte x,y=coord).

  • In Kombination mit Wörterbuch (Hash-Tabellen), erlauben sie Formen der Abbildung, die sonst viele Assoziationsebene erfordern würde. Betrachten wir zum Beispiel die Markierung (x, y) gefunden worden ist.

    // PHP
    if (!isset($found[$x])) {
        $found[$x] = Array();
        $found[$x][$y] = true;
    } else if (!isset($found[$x][$y])) {
        $found[$x][$y] = true;
    }
    
    # Python
    found[(x,y)] = True # parens added for clarity
    
  • Listen sollten mit der Erwartung von Operationen auf dessen Inhalt verwendet werden (daher die verschiedenen Erwähnungen von Unveränderlichkeit). Man wird wollen, um Pop, Schieben, Spleiß, in Scheiben schneiden, Suche, legen Sie vor, legen Sie nach, etc mit einer Liste.

  • Tupeln sollte ein Low-Level-Darstellung eines Objekts, in dem einfache Vergleiche gemacht werden, oder Vorgänge, wie beispielsweise das n-te Element oder n Elemente in einer vorhersagbaren Art und Weise, wie die Koordinaten Beispiel gegeben früheren Extraktion.

  • Schließlich Listen sind nicht hashable, so dass die Art der Zuordnung mit Wörterbüchern durchgeführt (Hash-Tabellen in Perl, assoziative Arrays in PHP) müssen mit Tupeln erfolgen.

    Hier ist ein einfaches Beispiel von Tupeln und Wörterbücher, endlich zusammen:

    """
    couple is a tuple of two people
    doesLike is a dictionary mapping couples to True or False
    """
    couple = "john", "jane"
    doesLike = dict()
    doesLike[couple] = True
    doesLike["jane", "john"] = False # unrequited love :'(
    
Beantwortet am 15/08/2008 um 19:00
quelle vom benutzer

stimmen
4

[1, 2, 3]in dem eine Liste ein Artikel hinzufügen oder löschen kann.
(1, 2, 3)ein Tupel , in dem einmal definiert, kann Änderung nicht durchgeführt werden.

Beantwortet am 25/06/2011 um 12:14
quelle vom benutzer

stimmen
3

Jedes Mal, wenn ich brauche in einer Sammlung von Elementen zu einer Funktion zu übergeben, wenn ich die Funktion will nicht die Werte in weitergegeben ändern - ich Tupeln verwenden.

Sonst, wenn ich die Funktion zu verändern, die Werte haben will, verwende ich Liste.

Immer, wenn Sie externe Bibliotheken verwenden und in einer Liste von Werten zu einer Funktion und sind sich nicht sicher über die Integrität der Daten, verwenden Sie ein Tupel übergeben müssen.

Beantwortet am 15/08/2008 um 17:38
quelle vom benutzer

stimmen
2
  • Ein Tupel könnte einen Schlüssel im Wörterbuch darstellen, weil es unveränderlich ist.
  • Verwenden Sie Listen, wenn Sie eine Sammlung von Daten, die nicht zufällig Zugriff benötigt.
Beantwortet am 20/05/2017 um 07:30
quelle vom benutzer

stimmen
2

Öffnen Sie eine Konsole und führen Python. Versuche dies:

  >>> list = [1, 2, 3]     
  >>> dir(list)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delsli
    ce__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getit
    em__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
     '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__r
    educe__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__'
    , '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 
'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Wie Sie die letzten in der letzten Zeile Liste können die folgenden Methoden: ‚append‘, ‚count‘, ‚verlängern‘, ‚index‘, ‚Einfügen‘, ‚pop‘, ‚entfernen‘, ‚Reverse‘, ‚Art '

Nun versuchen, das gleiche gilt für Tupel:

>>> tuple = (1, 2, 3)
>>> dir(tuple)
    ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__
    format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__get
    slice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__
    lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__'
    , '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

Nur ‚count‘ und ‚index‘ erscheint aus der Liste Methoden hier.

Dies liegt daran, Tupel unveränderlich sind und sie unterstützen keine Änderungen. Stattdessen sind sie einfacher und schneller in der internen Implementierung.

Beantwortet am 10/10/2015 um 19:30
quelle vom benutzer

stimmen
2

Wie andere erwähnt haben, sind Listen und Tupeln beiden Behälter, die verwendet werden können Python-Objekte zu speichern. Listen sind erweiterbar und deren Inhalte können durch Zuordnung ändern, auf der anderen Seite Tupel unveränderlich sind.

Auch Listen können nicht als Schlüssel in einem Wörterbuch verwendet werden, während Tupeln können.

Beantwortet am 08/08/2008 um 07:06
quelle vom benutzer

stimmen
1

(1,2,3) und [1,2,3] austauschbar in seltenen Bedingungen verwendet werden.

So (1,2,3) ist ein Tupel und ist unveränderlich. Alle Änderungen, die Sie machen möchten müssen Sie das Objekt zu überschreiben.

[1,2,3] ist eine Liste und Elemente können angehängt und entfernt werden.

Liste hat mehr Funktionen als ein Tupel.

Beantwortet am 31/03/2018 um 09:14
quelle vom benutzer

stimmen
1

[1,2,3] ist eine Liste.

(1,2,3) und unveränderlich ist ein Tupel.

Beantwortet am 08/10/2014 um 07:02
quelle vom benutzer

stimmen
1

Wenn Sie eine Lösung finden können, die mit Tupeln funktioniert, verwenden Sie sie, wie es Unveränderlichkeit Kräfte, welche Art von Antrieben Sie unten ein funktionaler Weg. Sie bedauern, so gut wie nie den funktionellen / unveränderlichen Weg hinunter.

Beantwortet am 08/08/2008 um 07:48
quelle vom benutzer

stimmen
0

(1,2,3) tupel [1,2,3] -Liste Listen sind wandelbar, auf denen verschiedene Operationen während Tupel ausgeführt werden können, sind unveränderlich, die nicht ausgebaut werden.Wir kann nicht hinzufügen, löschen oder ein beliebiges Element aktualisieren aus einem Tupel einmal es wird erstellt.

Beantwortet am 07/02/2019 um 10:03
quelle vom benutzer

stimmen
0

(1,2,3)ein Tupel und [1,2,3]eine Liste. Entweder der beiden repräsentieren Zahlenfolgen , aber beachten Sie, dass Tupel sind unveränderlich und Liste sind wandelbar Python - Objekte.

Beantwortet am 27/06/2016 um 20:48
quelle vom benutzer

stimmen
0

(1,2,3)ist ein Tupel , während [1,2,3]eine Liste ist. Ein Tupel ist ein unveränderliches Objekt , während eine Liste wandelbar ist.

Beantwortet am 19/02/2016 um 02:15
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more