2014-10-19 28 views
17

Ciao, quindi voglio moltiplicare gli interi all'interno di una lista.Come moltiplicare tutti i numeri interi nella lista

Ad esempio;

l = [1, 2, 3] 
l = [1*2, 2*2, 3*2] 

uscita:

l = [2, 4, 6] 

Quindi ero alla ricerca on-line e la maggior parte delle risposte sono state per quanto riguarda moltiplicano tutti i numeri interi con l'altro come ad esempio:

[1 * 2 * 3]

+0

Andare sul terminale Python e digitare 'help (map)'. – Mephy

risposta

40

Prova un list comprehension:

l = [x * 2 for x in l] 

Questo passa attraverso l, moltiplicando ogni elemento per due.

Naturalmente, c'è più di un modo per farlo. Se siete in lambda functions e map, si può anche fare

l = map(lambda x: x * 2, l) 

applicare la funzione lambda x: x * 2 ad ogni elemento in l. Ciò equivale a:

def timesTwo(x): 
    return x * 2 

l = map(timesTwo, l) 
+0

ahh vedo che fa un ciclo. C'è un modo più diretto di un loop? (non so se questo abbia senso: p) – Andre

+1

@Ali: Sebbene una comprensione di lista usi un ciclo è un tipo molto efficiente di loop, quindi una comprensione di lista è generalmente molto più veloce dell'uso di un ciclo forfor esplicito. –

8

Il modo più divinatorio sarebbe quella di utilizzare una lista di comprensione:

l = [2*x for x in l] 

Se avete bisogno di fare questo per un gran numero di interi, utilizzare numpy array:

l = numpy.array(l, dtype=int)*2 

un'alternativa finale è quello di utilizzare carta

l = list(map(lambda x:2*x, l)) 
.210
3

Un altro approccio funzionale, che è forse un po 'più facile da guardare che una funzione anonima se seguire questa strada sta usando functools.partial di utilizzare il due parametri operator.mul con un multiplo fisso

>>> from functools import partial 
>>> from operator import mul 
>>> double = partial(mul, 2) 
>>> list(map(double, [1, 2, 3])) 
[2, 4, 6] 
2

Il modo più semplice per me è:

map((2).__mul__, [1, 2, 3]) 
1
#multiplying each element in the list and adding it into an empty list 
original = [1, 2, 3] 
results = [] 
for num in original: 
    results.append(num*2)# multiply each iterative number by 2 and add it to the empty list. 

print(results) 
+1

@MirzaSisic fondamentalmente ci sono tanti modi per risolvere il problema precedente. Ho scelto di creare una lista vuota (risultati = []), quindi dopo ogni iterazione posso aggiungere (aggiungere) il numero iterato moltiplicato per 2 alla lista vuota. e infine stampare la lista vuota che contiene i numeri iterati moltiplicati per 2. se ancora non la ottieni, perfavore indica le specifiche in modo da poterti aiutare. grazie –

+1

@salparadise thumbs up per la modifica dei nomi delle variabili. –

0

usando NumPy:

In [1]: import numpy as np 

    In [2]: nums = np.array([1,2,3])*2 

    In [3]: nums.tolist() 
    Out[4]: [2, 4, 6]