tipos sumar imprimir funciones entrada declarar datos como python mass-assignment destructuring

python - sumar - Asigna múltiples variables a la vez con nombres de variables dinámicas



tipos de variables en python (7)

Soy consciente de que puedo asignar múltiples variables a varios valores a la vez con:

(foo, bar, baz) = 1, 2, 3

Y tienen foo = 1, bar = 2, y así sucesivamente.

Pero, ¿cómo podría hacer que los nombres de las variables sean más dinámicos? Es decir,

somefunction(data,tupleofnames): (return that each name mapped to a single datum) somefunction((1,2,3),(foo,bar,baz))

¿Y tiene lo mismo?


¿Qué tal esto?

def somefunction(data, tupleofnames): length = len(tupleofnames) for i in range(0, length): globals()[tupleofnames[i]] = data[i]

Aquí asumo que los datos y tupleofnames son listas donde tupleofnames es una lista de cadenas. Pero como Thomas mencionó, esto no es una buena práctica. Se puede corromper fácilmente su aplicación.


Echa un vistazo a los documentos de ayuda para zip y mapa. Por ejemplo, para zip: -

>>> zip( (1,2,3) , (''foo'',''bar'',''baz'') ) [(1, ''foo''), (2, ''bar''), (3, ''baz'')]

mapa requiere una función para mapear secuencias juntas. Pero, puede usar Ninguno en lugar de una función para devolver los mismos resultados que el archivo zip, arriba.

>>> map( None, (1,2,3) , (''foo'',''bar'',''baz'') ) [(1, ''foo''), (2, ''bar''), (3, ''baz'')]


Entiendo que las respuestas anteriores son todo lo que necesitan, pero tengo un buen truco de programación que también podría ayudarlo cuando desee asignar una tupla particular a las variables.

tupla T

T = (A, B, C)

las variables

var1, var2, var3 = T


Hay formas de hacerlo, pero no son buenas, y se considera una mala práctica en Python. Las nuevas variables no deben ser creadas por magia. Si desea tener una colección de cosas, use una lista, diccionario o conjunto, según corresponda.

Por ejemplo, podría devolver un diccionario: {"foo":1, "bar":2, "baz":3}


Puedes hacerlo así:

(foo, bar, baz) = (1, 2, 3)


Si los diccionarios no son lo que usted quiere, entonces posiblemente las parejas nombradas son el camino a seguir: permiten la creación eficiente de varias instancias de datos agrupados, con atributos nombrados.

http://docs.python.org/library/collections.html#collections.namedtuple

from collections import namedtuple mytype = namedtuple("mytype", "foo bar baz") a = mytype(1,2,3) a.foo 1 a.bar 2 a.baz 3


(foo, bar, baz) = [None] * 3 a,b,c = [0]*3 a,b,c = ["nihao"]*3