tutorial - Python: ¿cuál es la diferencia entre(1,2,3) y[1,2,3], y cuándo debería usar cada uno?
django urls (13)
En muchos lugares, (1,2,3)
y [1,2,3]
se pueden usar indistintamente.
¿Cuándo debería usar uno u otro, y por qué?
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.
De las preguntas frecuentes de Python :
Las listas y las tuplas, aunque son similares en muchos aspectos, generalmente se usan 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.
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.
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.
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.
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.
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 :''(
[1, 2, 3] es una lista en la que se pueden agregar o eliminar elementos.
(1, 2, 3) es una tupla en la que una vez definida, la modificación no se puede hacer.
[1,2,3]
es una lista.
(1,2,3)
es una tupla e inmutable.
abre una consola y ejecuta python. 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 puede ver, el último en la lista de la última línea tiene los siguientes métodos: ''append'', ''count'', ''extend'', ''index'', ''insert'', ''pop'', ''remove'', ''reverse'', ''sort ''
Ahora prueba lo mismo con 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'']
Aquí solo aparecen los métodos de ''recuento'' e ''índice'' de la lista.
Esto se debe a que las tuplas son inmutables y no admiten modificaciones. En cambio, son más simples y rápidos en la implementación interna.
(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. Cualquiera de las dos representa secuencias de números, pero tenga en cuenta que las tuplas son inmutables y que la lista son objetos mutables de Python.
- Una tupla puede representar una clave en el diccionario, porque es inmutable.
- Use listas si tiene una colección de datos que no necesita acceso aleatorio.