2014-10-19 13 views
17

Hallo, also möchte ich die ganzen Zahlen in einer Liste multiplizieren.Wie alle Integer innerhalb der Liste zu multiplizieren

Zum Beispiel;

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

Ausgang:

l = [2, 4, 6] 

So Online gesucht und die meisten Antworten wurden bezüglich multiplizieren alle Zahlen miteinander wie:

[1 * 2 * 3]

+0

Gehe zum Python-Terminal und tippe 'help (map)'. – Mephy

Antwort

40

Versuchen ein list comprehension:

l = [x * 2 for x in l] 

Dies geht durch l, multipliziert jedes Element mit zwei.

Natürlich gibt es mehrere Möglichkeiten, dies zu tun. Wenn Sie in lambda functions und map, können Sie auch tun

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

die Funktion lambda x: x * 2 auf jedes Element in l anzuwenden. Dies entspricht:

def timesTwo(x): 
    return x * 2 

l = map(timesTwo, l) 
+0

ahh ich sehe es macht eine Schleife. Gibt es einen direkteren Weg als eine Schleife? (Ich weiß nicht, ob das Sinn macht: p) – Andre

+1

@Ali: Obwohl ein Listenverständnis eine Schleife verwendet, ist es eine sehr effiziente Art von Schleife, so dass ein Listenverständnis im Allgemeinen viel schneller ist als eine explizite For-Schleife. –

8

Die meisten pythonic Weg, um eine Liste Verständnis verwenden wäre:

l = [2*x for x in l] 

Wenn Sie dies für eine große Anzahl von ganzen Zahlen tun müssen, verwenden Sie numpy Arrays:

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

Eine letzte Alternative ist Karte

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

Eine weitere funktionale Ansatz, bei vielleicht ein wenig leichter zu sehen als eine anonyme Funktion, wenn Sie diesen Weg gehen functools.partial wird mit dem Zwei-Parameter operator.mul mit einem festen mehreren

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

Der einfachste Weg, um mich zu nutzen ist:

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 im Grunde gibt es so viele Möglichkeiten, um das oben genannte Problem zu lösen. Ich habe mich entschieden, eine leere Liste zu erstellen (results = []), so dass ich nach jeder Iteration die iterierte Zahl multipliziert mit 2 zur leeren Liste hinzufügen (anhängen) kann. und schließlich drucke die leere Liste, die die iterierten Zahlen enthält multipliziert mit 2. Wenn Sie es immer noch nicht bekommen, zeigen Sie bitte auf Besonderheiten, damit ich Ihnen helfen kann. danke –

+1

@salparadise Daumen hoch für die Änderung in Variablennamen. –

0

mit 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]