tiempo rapido ordenamiento mezclas mezcla listas español ejecucion directa algoritmo python

rapido - ordenamiento shell python



¿Estoy seguro de los tipos de mezcla en una lista de Python? (4)

¿Hay problemas imprevistos en la mezcla de diferentes tipos en una lista de Python? Por ejemplo:

import random data = [["name1", "long name1", 1, 2, 3], ["name2", "long name2", 5, 6, 7]] name, long_name, int1, int2, int3 = random.choice(data)

Estoy usando este código para establecer aleatoriamente varios parámetros relacionados dentro de una función, pero aunque Python lo admite, desconfío de mezclar tipos como este en una lista. Ya que la lista de tipos de datos mixtos no se utilizará para ningún procesamiento aparte de la asignación de variables en sí misma (las variables que asigna a will, pero no la lista en sí), supongo que esto está bien, pero quiero asegurarme de que No es un código secretamente problemático.


El lenguaje está bien con la mezcla de tipos en una lista, pero debe saber que la cultura Python podría desaprobar su opinión. Las tuplas generalmente se usan cuando tienes una colección conocida de tipos mixtos, y los diferentes índices tienen semánticas diferentes. Las listas se usan generalmente cuando tienes una secuencia uniforme de longitud variable.

Entonces sus datos serían representados más convencionalmente como:

data = [ ("name1", "long name1", 1, 2, 3), ("name2", "long name2", 5, 6, 7), ... ]

Para decirlo de manera más sucinta: las tuplas se usan como estructuras en C, listas como matrices en C.


No hay problemas inherentes al tener múltiples tipos de datos en una lista. Por supuesto, pueden surgir problemas si intenta usar esa lista para algo que espera que sea del mismo tipo. En su ejemplo, si esto es todo lo que está haciendo con él, no hay forma de que se convierta en un problema. Sin embargo, podría considerar usar una tupla en lugar de una lista. Por convención, las tuplas se utilizan cuando la composición de la secuencia es fija; las listas se utilizan cuando puede agregar o eliminar de la secuencia.


No, no hay problema, puede almacenar cualquier tipo dentro de una list diferencia de los "días antiguos" cuando otros idiomas tenían matrices que solo querían un tipo de datos almacenados en ellas.

Dado que las listas también pueden almacenar otras listas, y otras estructuras de datos compuestas, junto con otras referencias de objetos, el procesamiento o la iteración a través de la lista puede volverse un poco más complejo debido a las posibles capas múltiples, que pasar por una matriz en una iteración simple de un solo nivel. . Esto también está relacionado con la copia superficial y profunda .

Si el código que procesa las listas es consciente de esto, no puedo pensar en ningún problema debido a esta capacidad para almacenar diferentes cosas en una lista.


Si simplemente está usando esto para almacenar diferentes resultados posibles, que siguen el contrato de name, long_name, int1, int2, int3 de su función name, long_name, int1, int2, int3 , entonces no hay problema.

Si esto está siendo usado por otro código que no conoce los tipos dentro de la lista y su orden, entonces veo un problema. Un ejemplo simple:

>>> min([''-2'', 1]) 1