Python: ¿cuál es la diferencia entre (1,2,3) y [1,2,3], y cuándo debería usar cada uno?

votos
44

En muchos lugares, (1,2,3)y [1,2,3]se puede usar indistintamente.

¿Cuándo debería usar uno u otro, y por qué?

Publicado el 05/08/2008 a las 08:18
fuente por usuario
En otros idiomas...                            


15 respuestas

votos
31

De las preguntas frecuentes de Python :

Las listas y las tuplas, aunque son similares en muchos aspectos, generalmente se utilizan de maneras fundamentalmente diferentes. Se puede pensar que las tuplas son similares a los registros de Pascal o las estructuras C; son pequeñas colecciones de datos relacionados que pueden ser de diferentes tipos que se operan como un grupo. Por ejemplo, una coordenada cartesiana se representa apropiadamente como una tupla de dos o tres números.

Las listas, por otro lado, son más como matrices en otros idiomas. Tienden a contener un número variable de objetos, todos los cuales tienen el mismo tipo y se operan uno a uno.

Generalmente, por convención, no elegiría una lista o una tupla simplemente en función de su (im) mutabilidad. Elegirías una tupla para pequeñas colecciones de datos completamente diferentes en los que una clase completa sería demasiado pesada, y una lista para colecciones de cualquier tamaño razonable donde tienes un conjunto homogéneo de datos.

Respondida el 05/08/2008 a las 14:22
fuente por usuario

votos
19

La lista [1,2,3] es dinámica y flexible, pero esa flexibilidad tiene un costo de velocidad.

La tupla (1,2,3) es fija (inmutable) y, por lo tanto, más rápida.

Respondida el 05/08/2008 a las 08:27
fuente por usuario

votos
11

Las tuplas son una forma rápida y flexible de crear tipos de datos compuestos . Las listas son contenedores para, bueno, listas de objetos.

Por ejemplo, usaría una Lista para almacenar una lista de detalles de estudiantes en una clase.

Cada detalle de estudiante en esa lista puede ser una 3-tupla que contiene su número de rollo, nombre y puntaje de la prueba.

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

Además, como las tuplas son inmutables, se pueden usar como claves en los diccionarios.

Respondida el 07/08/2008 a las 12:21
fuente por usuario

votos
7

La noción de tuplas es altamente expresiva:

  • Pragmáticamente, son geniales para empaquetar y desempaquetar valores ( x,y=coord).

  • En combinación con diccionarios (tablas hash), permiten formas de mapeo que de otra manera requerirían muchos niveles de asociación. Por ejemplo, considere marcar que (x, y) se ha encontrado.

    // 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
    
  • Las listas deben usarse con la expectativa de las operaciones sobre su contenido (de ahí las diversas menciones de inmutabilidad). Uno querrá abrir, empujar, empalmar, cortar, buscar, insertar antes, insertar después, etc. con una lista.

  • Tuplas debe ser una representación de bajo nivel de un objeto, donde se realizan comparaciones simples, o operaciones tales como extraer el n-ésimo elemento o n elementos de una manera predecible, como el ejemplo de coordenadas dado anteriormente.

  • Por último, las listas no son hashables, por lo que el tipo de mapeo hecho con diccionarios (tablas hash en Perl, matrices asociativas en PHP) debe hacerse con tuplas.

    Aquí hay un ejemplo simple de tuplas y diccionarios, juntos por fin:

    """
    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 :'(
    
Respondida el 15/08/2008 a las 19:00
fuente por usuario

votos
4

[1, 2, 3]es una lista en la que se puede añadir o eliminar elementos.
(1, 2, 3)es una tupla en el que una vez definido, la modificación no se puede hacer.

Respondida el 25/06/2011 a las 12:14
fuente por usuario

votos
3

Cada vez que necesito pasar una colección de elementos a una función, si deseo que la función no cambie los valores pasados, utilizo tuplas.

De lo contrario, si quiero tener la función de alterar los valores, uso list.

Siempre si está utilizando librerías externas y necesita pasar una lista de valores a una función y no está seguro de la integridad de los datos, use una tupla.

Respondida el 15/08/2008 a las 17:38
fuente por usuario

votos
2
  • Una tupla podría representar una clave en el diccionario, porque es inmutable.
  • Utilizar listas si usted tiene una colección de datos que no necesita acceso aleatorio.
Respondida el 20/05/2017 a las 04:30
fuente por usuario

votos
2

abrir una consola y ejecutar pitón. Prueba esto:

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

Como se puede ver el último de la lista última línea tiene los siguientes métodos: 'append', 'contar', 'extender', 'índice', 'Insertar', 'pop', 'eliminar', 'atrás', 'especie '

Ahora trata de la misma para la tupla:

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

Sólo 'contar' e 'índice' de los métodos lista aparece aquí.

Esto se debe a que las tuplas son inmutables y que no apoyan ninguna modificación. En su lugar, son más simples y más rápido en la implementación interna.

Respondida el 10/10/2015 a las 16:30
fuente por usuario

votos
2

Como han mencionado otros, las listas y las tuplas son contenedores que se pueden usar para almacenar objetos de Python. Las listas son extensibles y sus contenidos pueden cambiar por asignación, por otro lado las tuplas son inmutables.

Además, las listas no pueden usarse como claves en un diccionario, mientras que las tuplas sí pueden.

Respondida el 08/08/2008 a las 07:06
fuente por usuario

votos
1

(1,2,3) y [1,2,3] pueden usarse indistintamente en condiciones raras.

Así que (1,2,3) es una tupla y es inmutable. Todos los cambios que desea hacer necesitan para sobrescribir el objeto.

[1,2,3] es una lista y los elementos se pueden adjuntas y eliminado.

Lista tiene más características que una tupla.

Respondida el 31/03/2018 a las 06:14
fuente por usuario

votos
1

[1,2,3] es una lista.

(1,2,3) es una tupla e inmutable.

Respondida el 08/10/2014 a las 07:02
fuente por usuario

votos
1

Si puede encontrar una solución que funcione con tuplas, úselas, ya que fuerza la inmutabilidad, lo que lo lleva a una ruta más funcional. Casi nunca te arrepientes de haber recorrido el camino funcional / inmutable.

Respondida el 08/08/2008 a las 07:48
fuente por usuario

votos
0

(1,2,3) tupla [1,2,3] listas -list son mutables en el que diversas operaciones se pueden realizar mientras que las tuplas son inmutables que no puede ser extended.we no se puede añadir, eliminar o actualizar cualquier elemento de una tupla una vez se crea.

Respondida el 07/02/2019 a las 10:03
fuente por usuario

votos
0

(1,2,3)es una tupla y [1,2,3]es una lista. Usted cualquiera de los dos representan secuencias de números, pero tenga en cuenta que las tuplas son inmutables y la lista de objetos de Python son mutables.

Respondida el 27/06/2016 a las 17:48
fuente por usuario

votos
0

(1,2,3)es un tiempo tupla [1,2,3]es una lista. Una tupla es un objeto inmutable, mientras que una lista es mutable.

Respondida el 18/02/2016 a las 23:15
fuente por usuario

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