2012-04-01 14 views

Respuesta

13
done = [(el, x) for el in [a, b, c, d]] 
6

Otra manera de lograr el mismo resultado: las listas por comprensión

done = [(i,x) for i in [a,b,c,d]] 
8

Usando itertools.repeat

>>> x = 'apple' 
>>> a,b,c,d = 'a','b','c','d' 
>>> from itertools import repeat  
>>> zip([a,b,c,d],repeat(x)) 
[('a', 'apple'), ('b', 'apple'), ('c', 'apple'), ('d', 'apple')] 

Usando itertools.product

>>> from itertools import product 
>>> list(product([a,b,c,d],[x])) 
[('a', 'apple'), ('b', 'apple'), ('c', 'apple'), ('d', 'apple')] 
+1

enfoque interesante. Pensé en usar zip() con [x] * len ([a, b, c, d]), pero no sabía sobre itertools. –

+0

>>> x = 'apple' >>> y = [a, b, c, d] >>> zip (y, [x] * len (y)) Eso también funciona, estaba pensando de formas rápidas de hacerlo utilizando el conjunto directamente sin guardarlo en un varible. – jamylak

+1

Acabo de leer [esta publicación del blog sobre 'repeat'] (http://rhodesmill.org/brandon/2012/counting-without-counting/), es muy rápido. Supongo que uno o ambos son más rápidos que los otros métodos. El segundo es muy inteligente. – agf

Cuestiones relacionadas