Ho saputo per un po 'che la differenza principale tra liste e tuple in Python è che le liste sono mutabili e le tuple no. Oltre a questo e ai diversi metodi a loro disposizione, so molto poco su liste e tuple. C'è qualche altra differenza tra loro? Ci sono qualsiasi vantaggi/svantaggi (oltre all'immutabilità) nell'usare una tupla su un elenco in Python 3? Si ha un tempo di accesso più veloce o una dimensione di memoria più piccola o più metodi rispetto all'altra? Le loro strutture interne sono in qualche modo diverse? O una tupla è solo una lista immutabile, niente di più?Differenza tra lista e tupla (meno immutabilità) in Python?
risposta
Entrambe le liste e le tuple sono implementate internamente come matrici di riferimenti agli oggetti elemento. In questo modo, entrambi possono essere indicizzati ed entrambi richiedono la stessa quantità di memoria per ciascun elemento. Internamente, sono entrambi omogenei (riferimenti non tipizzati). Logicamente, sono entrambi eterogenei (dereferenziazione automatica, il tipo è legato all'oggetto di destinazione).
L'elenco può essere modificato, quindi l'array interno è un array dinamico. La tupla non può essere modificata, quindi è internamente solo una matrice di dimensioni fisse. Da questo punto di vista, le tuple sono più semplici.
Per il quale è più veloce o meno, è possibile misurare la situazione concreta utilizzando il modulo timeit.
Si dovrebbe essere consapevoli del fatto che le tuple sono immutabili solo rispetto al numero e ai valori dei riferimenti memorizzati. Se (diciamo) una lista viene usata come uno degli elementi di tupla, il contenuto della lista può essere modificato. In questo modo, logicamente, il contenuto della tupla non è costante (tale tupla non è lavabile).
Utilizzare qualsiasi tipo è migliore per lo scopo. Non c'è una preferenza rigida. Dipende dalla situazione.
Esegui dir su entrambi: elenco di metodi piuttosto diverso (pop mostrato di seguito). tuple possono essere più veloce
>>> alist = [1,2,3]
>>> atuple = (1,2,3)
>>> alist.pop()
3
>>> atuple.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'pop'
'append', 'count', 'estendere', 'index', 'inserto', 'pop', 'rimuovere', 'inverso', 'specie' sono tutti disponibili per liste, e non per le tuple - il che ha senso, vista l'idea di immutabilità.
Filosoficamente, alcune persone si aspettano che le liste siano omogenee e non hanno questa aspettativa di tuple.
Ci sono differenze interne in i tipi, come strucure o encoding? – fouric
Se si intende la codifica delle stringhe, è irrilevante per le tuple. La codifica è solo un modo per convertire una stringa astratta in una sequenza concreta di byte. Quando la tupla contiene un elemento stringa, l'oggetto stringa viene creato al di fuori della tupla. L'elemento tupla si riferisce solo all'oggetto (riferimento non tipizzato). Questo è lo stesso con entrambi gli elementi tuple o list. – pepr
- 1. C'è una differenza tra una lista e una tupla?
- 2. Qual è la differenza tra lista e lista [:] in python?
- 3. Haskell: tra una lista e una tupla
- 4. Differenza tra bytearray e lista
- 5. Parametro funzione Python: tupla/lista
- 6. Converti lista in tupla in Python
- 7. Differenza tra filtro e comprensione lista
- 8. Differenza tra "" e "" in Python
- 9. Conversione tupla e lista ricorsiva
- 10. Python lista argomento parser di lista o tupla di tuple
- 11. Differenza tra Bytearray e List in Python
- 12. Python: Differenza tra `is` e` == `?
- 13. Qual è la differenza tra una tupla e una compressa_pair?
- 14. Una lista contro la situazione di tupla in Python
- 15. relazione tra varianza e mutabilità/immutabilità in Scala
- 16. Differenza in python tra basestring e types.StringType?
- 17. Differenza tra ritorni e stampa in python?
- 18. Differenza tra os.path.exists e os.path.isfile in python
- 19. Differenza tra dizionario e ordereddict in python
- 20. Scala, GUI e immutabilità
- 21. Immutabilità e serializzazione XML
- 22. Che differenza c'è tra la lista [-1:] [0] e la lista [len (lista) -1]?
- 23. Qual è la differenza tra la lista() e []
- 24. Automapper e immutabilità
- 25. Qual è la differenza tra dataframe e lista in R?
- 26. Qual è la differenza tra '() e (lista) in Clojure?
- 27. Qual è la differenza tra heapq e PriorityQueue in python?
- 28. Converti lista in tupla in serie numpy?
- 29. valori di swap in una tupla/lista all'interno di una lista in Python?
- 30. Tipo anonimo e tupla
possibile duplicato di [Qual è la differenza tra elenco e tuple?] (Http://stackoverflow.com/questions/626759/whats-the-difference-tra between-list-and-tuples) –