list - Python: Was ist der Unterschied zwischen (1,2,3) und [1,2,3] und wann sollte ich jedes verwenden?

Translate

Vielerorts,(1,2,3)(ein Tupel) und[1,2,3](eine Liste) kann austauschbar verwendet werden.

Wann sollte ich das eine oder andere verwenden und warum?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Von demPython-FAQ:

Listen und Tupel sind zwar in vielerlei Hinsicht ähnlich, werden jedoch im Allgemeinen auf grundlegend unterschiedliche Weise verwendet. Tupel können als ähnlich wie Pascal-Datensätze oder C-Strukturen angesehen werden. Es handelt sich um kleine Sammlungen verwandter Daten, die unterschiedlicher Art sein können und als Gruppe verarbeitet werden. Beispielsweise wird eine kartesische Koordinate in geeigneter Weise als Tupel aus zwei oder drei Zahlen dargestellt.

Listen hingegen ähneln eher Arrays in anderen Sprachen. Sie neigen dazu, eine unterschiedliche Anzahl von Objekten aufzunehmen, die alle den gleichen Typ haben und einzeln bearbeitet werden.

Im Allgemeinen würden Sie eine Liste oder ein Tupel nicht nur aufgrund seiner (Un-) Veränderlichkeit auswählen. Sie würden ein Tupel für kleine Sammlungen völlig unterschiedlicher Daten wählen, in denen eine vollständige Klasse zu schwer wäre, und eine Liste für Sammlungen jeder vernünftigen Größe, in denen Sie einen homogenen Datensatz haben.

Quelle
Translate

Die Liste[1,2,3]ist dynamisch und flexibel, aber diese Flexibilität ist mit Geschwindigkeitskosten verbunden.

Das Tupel(1,2,3)ist fest (unveränderlich) und daher schneller.

Quelle
HS.
Translate

Tupel sind eine schnelle und flexible Möglichkeit zum ErstellenzusammengesetztDatentypen. Listen sind Container für Listen von Objekten.

Beispielsweise würden Sie eine Liste verwenden, um eine Liste der Schülerdetails in einer Klasse zu speichern.

Jedes Schülerdetail in dieser Liste kann ein 3-Tupel sein, das die Rollennummer, den Namen und die Testergebnisse enthält.

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

Da Tupel unveränderlich sind, können sie auch als Schlüssel in Wörterbüchern verwendet werden.

Quelle
Translate

Der Begriff der Tupel ist sehr ausdrucksstark:

  • Pragmatisch eignen sie sich hervorragend zum Ein- und Auspacken von Werten (x,y=coord).

  • In Kombination mit Wörterbüchern (Hash-Tabellen) ermöglichen sie Zuordnungsformen, die ansonsten viele Assoziationsebenen erfordern würden. Markieren Sie beispielsweise, dass (x, y) gefunden wurde.

    // 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 an ihrem Inhalt verwendet werden (daher die verschiedenen Erwähnungen der Unveränderlichkeit). Man möchte eine Liste mit Pop, Push, Splice, Slice, Search, Insert Before, Insert After usw. mit einer Liste versehen.

  • Tupel sollten eine Darstellung eines Objekts auf niedriger Ebene sein, bei der einfache Vergleiche durchgeführt werden, oder Operationen wie das Extrahieren des n-ten Elements oder n Elemente auf vorhersagbare Weise, wie das zuvor angegebene Koordinatenbeispiel.

  • Schließlich sind Listen nicht hashbar, daher muss die Art der Zuordnung mit Wörterbüchern (Hash-Tabellen in Perl, assoziative Arrays in PHP) mit Tupeln erfolgen.

    Hier ist endlich ein einfaches Beispiel für Tupel und Wörterbücher:

    """
    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 :'(
    
Quelle
Dora Lee
Translate

[1, 2, 3]ist eine Liste, in der man Elemente hinzufügen oder löschen kann.
(1, 2, 3)ist ein Tupel, in dem nach der Definition keine Änderung mehr vorgenommen werden kann.

Quelle
cnu
Translate

Wann immer ich eine Sammlung von Elementen an eine Funktion übergeben muss, wenn ich möchte, dass die Funktion die übergebenen Werte nicht ändert, verwende ich Tupel.

Andernfalls verwende ich list, wenn ich die Funktion zum Ändern der Werte haben möchte.

Verwenden Sie immer ein Tupel, wenn Sie externe Bibliotheken verwenden und eine Werteliste an eine Funktion übergeben müssen und sich über die Integrität der Daten nicht sicher sind.

Quelle
JSN
Translate

Wie bereits erwähnt, sind Listen und Tupel beide Container, in denen Python-Objekte gespeichert werden können. Listen sind erweiterbar und ihr Inhalt kann sich durch Zuordnung ändern, andererseits sind Tupel unveränderlich.

Außerdem können Listen nicht als Schlüssel in einem Wörterbuch verwendet werden, wohingegen Tupel dies können.

Quelle
Translate

Öffnen Sie eine Konsole und führen Sie Python aus. 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 vielleicht sehen, haben die letzten in der letzten Zeilenliste die folgenden Methoden:'Anhängen', 'Zählen', 'Erweitern', 'Index', 'Einfügen', 'Pop', 'Entfernen', 'Umkehren', 'Sortieren'

Versuchen Sie jetzt dasselbe 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'Von Listenmethoden wird hier angezeigt.

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

Quelle
Translate
  • Ein Tupel kann einen Schlüssel im Wörterbuch darstellen, da er unveränderlich ist.
  • Verwenden Sie Listen, wenn Sie über eine Sammlung von Daten verfügen, für die kein wahlfreier Zugriff erforderlich ist.
Quelle
Translate

Wenn Sie eine Lösung finden, die mit Tupeln funktioniert, verwenden Sie sie, da sie Unveränderlichkeit erzwingt, die Sie auf einen funktionaleren Weg bringt. Sie bereuen es fast nie, den funktionalen / unveränderlichen Weg eingeschlagen zu haben.

Quelle
Translate

[1,2,3]ist eine Liste.

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

Quelle
Translate

(1,2,3) und [1,2,3] können unter seltenen Bedingungen austauschbar verwendet werden.

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

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

Liste hat mehr Funktionen als ein Tupel.

Quelle
Translate

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

Quelle
Translate

(1,2,3)ist ein Tupel und[1,2,3]ist eine Liste. Sie stellen eine der beiden Zahlenfolgen dar, beachten Sie jedoch, dass Tupel unveränderlich sind und Listen veränderbare Python-Objekte sind.

Quelle
Translate

(1,2,3) -Tupel [1,2,3] -Listenlisten sind veränderbar, für die verschiedene Operationen ausgeführt werden können, während Tupel unveränderlich sind, die nicht erweitert werden können. Wir können kein Element aus einem Tupel einmal hinzufügen, löschen oder aktualisieren es wird erstellt.

Quelle