2012-04-01 20 views

risposta

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

Un altro modo per ottenere lo stesso risultato: list comprehension

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

Utilizzando 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')] 

Utilizzando itertools.product

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

approccio interessante. Ho pensato di usare zip() con [x] * len ([a, b, c, d]), ma non sapevo di itertools. –

+0

>>> x = 'apple' >>> y = [a, b, c, d] >>> zip (y, [x] * len (y)) Anche questo funziona, stavo pensando di modi rapidi di farlo usando l'array direttamente senza salvarlo in una variabile. – jamylak

+1

Ho appena letto [questo post sul blog su 'repeat'] (http://rhodesmill.org/brandon/2012/counting-without-counting/), è molto veloce. Direi che uno o entrambi sono più veloci degli altri metodi. Il secondo è molto intelligente. – agf

Problemi correlati