C'è un modo per produrre due (o più) articoli per iterazione in una lista/dizionario/set di comprensione? Come semplice esempio, per emettere tutti i doppi positivi e negativi dei numeri interi da 1 a 3 (ovvero, {x | x = ±2n, n ∈ {1...3}}
), esiste una sintassi simile alla seguente?Comprensioni: più valori per iterazione
>>> [2*i, -2*i for i in range(1, 4)]
[2, -2, 4, -4, 6, -6]
So che potrei tuple di uscita di (+i,-i)
e appiattire che, ma mi chiedevo se ci fosse un modo per risolvere completamente il problema utilizzando un unico comprensione.
Attualmente, sto producendo due liste e concatenare (che funziona, a condizione che l'ordine non è importante):
>>> [2*i for i in range(1, 4)] + [-2*i for i in range(1, 4)]
[2, 4, 6, -2, -4, -6]
Si noti che se l'ordine non è importante, probabilmente si sta utilizzando la struttura sbagliata dei dati - '{2 * i per i in range (1, 4) } | {-2 * i per i in range (1, 4)} '. –
@Lattyware Questo ha l'effetto collaterale di unificare il pool di elementi di output, che può essere o non essere desiderabile. –
Quindi * probabilmente * - se hai bisogno di duplicati, sì, i set non sono adatti. –