Python:¿cuál es la diferencia entre (1,2,3) y [1,2,3], y cuándo se debe utilizar cada uno?

StackOverflow https://stackoverflow.com/questions/1983

  •  08-06-2019
  •  | 
  •  

Pregunta

En muchos lugares, (1,2,3) (una tupla) y [1,2,3] (una lista) se pueden usar indistintamente.

Cuando debo usar uno o el otro, y por qué?

¿Fue útil?

Solución

A partir de la Python FAQ:

Listas y tuplas, similares en muchos aspectos, se utilizan generalmente en formas fundamentalmente diferentes.Tuplas puede ser considerado como similar a la de Pascal, registros o estructuras de C;son pequeñas colecciones de datos relacionados que pueden ser de diferentes tipos, los cuales son operados como un grupo.Por ejemplo, una de coordenadas Cartesianas está debidamente representada como una tupla de dos o tres números.

Las listas, por otro lado, son más como matrices en otros idiomas.Ellos tienden a tener un número variable de objetos los cuales tienen el mismo tipo y que son operados por uno-por-uno.

En general, por la convención de no elegir una lista o tupla, sólo se basa en su (im)mutabilidad.Se elige una tupla para pequeñas colecciones de diferentes piezas de datos en la que una verdadera clase sería demasiado pesado, y una lista de las colecciones de cualquier tamaño razonable de que usted tiene un conjunto homogéneo de datos.

Otros consejos

La lista [1,2,3] es dinámico y flexible, pero que la flexibilidad viene a una velocidad de costos.

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

Las tuplas son una forma rápida\flexible para crear compuesto -tipos de datos.Las listas son contenedores para, así, listas de objetos.

Por ejemplo, se puede usar una Lista para almacenar una lista de los estudiantes detalles en una clase.

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

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

También, porque las tuplas son inmutables pueden ser utilizados como claves en los diccionarios.

La noción de tuplas son muy expresivos:

  • De manera pragmática, son ideales para el embalaje y desembalaje de valores (x,y=coord).

  • En combinación con los diccionarios (tablas hash), que permiten formas de asignación que de otra manera requerirían muchos niveles de la asociación.Por ejemplo, considere la posibilidad de marcado que (x,y) ha sido 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 ser utilizados con la expectativa de operaciones sobre su contenido (de ahí las distintas menciones de la inmutabilidad).Nadie va a querer pop, push, empalme, corte, buscar, insertar antes, insertar después, etc, con una lista.

  • Las tuplas se debe a un bajo nivel de representación de un objeto, donde simples comparaciones están hechas, o las operaciones, tales como la extracción de la n-esima elemento o n elementos en una forma predecible, tales como las coordenadas ejemplo anterior.

  • Por último, las listas no son hashable, por lo que el tipo de asignación de hecho con diccionarios (tablas hash en Perl, matrices asociativas en PHP) deben hacerse con tuplas.

    He aquí un simple ejemplo de tuplas y diccionarios, juntos en el pasado:

    """
    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 :'(
    

[1, 2, 3] es una lista en la que uno puede agregar o eliminar elementos.
(1, 2, 3) es una tupla en la que una vez definida, la modificación no se puede hacer.

Cada vez que tengo que pasar en una colección de elementos para una función, si quiero la función para no cambiar los valores pasados en - puedo usar tuplas.

Otra cosa, si quiero tener la función para modificar los valores, yo uso la lista.

Siempre si el uso de librerías externas y la necesidad de pasar de una lista de valores a una función y no está seguro acerca de la integridad de los datos, el uso de una tupla.

Como otros han mencionado, Listas y tuplas son contenedores que pueden ser utilizados para almacenar los objetos de python.Las listas son extensibles y su contenido puede cambiar por medio de la asignación, por otro lado las tuplas son inmutables.

También, las listas no pueden ser utilizados como claves de un diccionario mientras que las tuplas pueden.

abrir una consola y ejecutar python.Intente 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 usted puede ver la última, en la última línea de la lista tiene los siguientes métodos:'añadir', 'contar', 'extender', 'index', 'insert', 'pop', 'eliminar', 'reverse', 'ordenar'

Ahora a tratar 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' y el 'índice' a partir de la lista de métodos que aparece aquí.

Esto es debido a que las tuplas son inmutables y que no admiten modificaciones.En lugar de que ellos son más simples y más rápido en la implementación interna.

  • Una tupla podría representar una clave en el diccionario, porque es inmutable.
  • Utilice las listas si usted tiene una colección de datos que no necesidad de acceso aleatorio.

Si usted puede encontrar una solución que funciona con tuplas, el uso de ellos, ya que las fuerzas de la inmutabilidad de que tipo de unidades de abajo más funcional camino.Casi nunca se arrepentirá de ir abajo en el funcional/inmutable de la ruta.

[1,2,3] es una lista.

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

(1,2,3) y [1,2,3] puede ser utilizado indistintamente en condiciones excepcionales.

Para (1,2,3) es una tupla y es inmutable.Cualquier cambio que desee hacer necesario sobrescribir el objeto.

[1,2,3] es una lista de elementos y puede ser añadido y eliminado.

La lista tiene más características de una tupla.

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

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

(1,2,3)-tupla [1,2,3]-lista de las listas son mutables en el que varias operaciones pueden ser realizadas mientras que las tuplas son inmutables que no pueden ser extendidos.no podemos añadir,eliminar o actualizar cualquier elemento de una tupla de una vez creada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top