Python: qual è la differenza tra (1,2,3) e [1,2,3], e quando devo usare ciascuno?

voti
44

In molti luoghi, (1,2,3)e [1,2,3]possono essere usati in modo intercambiabile.

Quando devo usare uno o l'altro, e perché?

È pubblicato 05/08/2008 alle 06:18
fonte dall'utente
In altre lingue...                            


15 risposte

voti
19

L'elenco [1,2,3] è dinamico e flessibile, ma che la flessibilità ha un costo velocità.

La tupla (1,2,3) è fissa (immutabile) e quindi più veloce.

Risposto il 05/08/2008 a 06:27
fonte dall'utente

voti
31

Dal FAQ di Python :

Liste e tuple, mentre simile sotto molti aspetti, sono generalmente usati in modi fondamentalmente diversi. Le tuple possono essere pensati come simile ai record Pascal o struct C; sono piccole collezioni di dati correlati che possono essere di diversi tipi che sono gestiti come un gruppo. Ad esempio, coordinate cartesiane viene opportunamente rappresentato come una tupla di due o tre numeri.

Elenchi, d'altra parte, sono più come gli array in altre lingue. Essi tendono ad avere un numero variabile di oggetti che hanno tutti lo stesso tipo e che vengono utilizzati ad uno ad uno.

Generalmente per convenzione non sarebbe scegliere una lista o una tupla solo in base alla sua (im) mutevolezza. Si potrebbe scegliere una tupla per piccole collezioni di completamente diversi pezzi di dati in cui una classe piena regola sarebbe troppo pesante, e una lista per le collezioni di qualsiasi dimensione ragionevole in cui si dispone di un insieme omogeneo di dati.

Risposto il 05/08/2008 a 12:22
fonte dall'utente

voti
11

Le tuple sono un modo flessibile \ rapido per creare compositi tipi di dati. Le liste sono contenitori per, così, elenchi di oggetti.

Ad esempio, è possibile utilizzare un elenco per memorizzare un elenco di dettagli degli studenti in una classe.

Ogni dettaglio studente in tale elenco può essere un 3-tupla contenente il loro numero di matricola, nome e punteggio del test.

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

Inoltre, poiché le tuple sono immutabili possono essere utilizzati come chiavi nei dizionari.

Risposto il 07/08/2008 a 10:21
fonte dall'utente

voti
2

Come altri hanno già detto, liste e tuple sono entrambi contenitori che possono essere usati per memorizzare oggetti pitone. Elenchi sono estensibili e il loro contenuto possono cambiare da assegnazione, dall'altro tuple mano sono immutabili.

Inoltre, le liste non possono essere utilizzati come chiavi in ​​un dizionario, mentre tuple può.

Risposto il 08/08/2008 a 05:06
fonte dall'utente

voti
1

Se si riesce a trovare una soluzione che funziona con tuple, li usano, in quanto costringe l'immutabilità che tipo di unità giù un percorso più funzionale. È quasi mai rimpianto andare giù per il sentiero funzionale / immutabile.

Risposto il 08/08/2008 a 05:48
fonte dall'utente

voti
3

Ogni volta che ho bisogno di passare in un insieme di elementi a una funzione, se voglio la funzione di non modificare i valori passati - io uso tuple.

Altrimenti, se voglio avere la funzione di modificare i valori, io uso la lista.

Sempre se si utilizza librerie esterne e la necessità di passare in un elenco di valori a una funzione e sono incerti circa l'integrità dei dati, utilizzare una tupla.

Risposto il 15/08/2008 a 15:38
fonte dall'utente

voti
7

La nozione di tuple sono fortemente espressivo:

  • Pragmaticamente, sono grandi per fare e disfare i valori ( x,y=coord).

  • In combinazione con i dizionari (tabelle hash), permettono forme di mappatura che altrimenti richiederebbero molti livelli di associazione. Ad esempio, considera di marcatura che (x, y) è stato trovato.

    // 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
    
  • Elenchi devono essere usati con l'aspettativa di operazioni sul suo contenuto (da qui i vari menzioni dell'immutabilità). Vorrà pop, spingere, giuntura, fetta, di ricerca, inserire prima, inserire dopo, ecc con una lista.

  • Tuple devono essere una rappresentazione di basso livello di un oggetto, in cui sono realizzati i confronti semplici, o operazioni quali l'estrazione dell'elemento n'th o n elementi in modo prevedibile, come la coordinate esempio dato in precedenza.

  • Infine, le liste non sono hashable, quindi il tipo di mappatura fatto con dizionari (tabelle hash in Perl, array associativi in ​​PHP) deve essere effettuata con tuple.

    Ecco un semplice esempio di tuple e dizionari, finalmente insieme:

    """
    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 :'(
    
Risposto il 15/08/2008 a 17:00
fonte dall'utente

voti
4

[1, 2, 3]è una lista in cui si può aggiungere o eliminare elementi.
(1, 2, 3)è una tupla in un tempo definito, modifica non può essere fatto.

Risposto il 25/06/2011 a 10:14
fonte dall'utente

voti
1

[1,2,3] è una lista.

(1,2,3) è una tupla e immutabile.

Risposto il 08/10/2014 a 05:02
fonte dall'utente

voti
2

aprire una console ed eseguire python. Prova questo:

  >>> 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']

Come si può vedere l'ultima sull'ultima linea lista hanno i seguenti metodi: 'append', 'count', 'estendere', 'index', 'inserto', 'pop', 'rimuovere',, 'specie 'inversa' '

Ora provate la stessa cosa per tuple:

>>> 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']

Solo 'count' e 'indice' dai metodi elenco viene visualizzato qui.

Questo perché le tuple sono immutabili e non supportano alcuna modifica. Invece sono più semplici e più veloci in implementazione interna.

Risposto il 10/10/2015 a 18:30
fonte dall'utente

voti
0

(1,2,3)è una tupla, mentre [1,2,3]è una lista. Una tupla è un oggetto immutabile, mentre la lista è mutevole.

Risposto il 19/02/2016 a 00:15
fonte dall'utente

voti
0

(1,2,3)è una tupla ed [1,2,3]è una lista. È una delle due rappresentano sequenze di numeri, ma si noti che le tuple sono immutabili e la lista sono oggetti Python mutabili.

Risposto il 27/06/2016 a 19:48
fonte dall'utente

voti
2
  • Una tupla può rappresentare una chiave nel dizionario, perché è immutabile.
  • Utilizzare gli elenchi se si dispone di una raccolta di dati che non ha bisogno di accesso casuale.
Risposto il 20/05/2017 a 06:30
fonte dall'utente

voti
1

(1,2,3) e [1,2,3] possono essere usati in modo intercambiabile in condizioni rare.

Così (1,2,3) è una tupla ed è immutabile. Tutte le modifiche che si desidera fare hanno bisogno di sovrascrivere l'oggetto.

[1,2,3] è un elenco ed elementi può essere aggiunto e rimosso.

Lista ha più funzioni rispetto una tupla.

Risposto il 31/03/2018 a 08:14
fonte dall'utente

voti
0

(1,2,3) -tuple [1,2,3] elenchi -list sono mutabili su cui varie operazioni possono essere eseguite mentre tuple sono immutabili che non possono essere extended.we non può aggiungere, eliminare o aggiornare qualsiasi elemento da una tupla volta viene creato.

Risposto il 07/02/2019 a 08:03
fonte dall'utente

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