Können Sie nur verwenden einer list-comprehension:
my_list =[1,2,3,4,5]
my_new_list =[i *5for i in my_list]>>>print(my_new_list)[5,10,15,20,25]
Beachten Sie, dass eine list comprehension wird in der Regel ein effizienter Weg, um eine for Schleife:
my_new_list =[]for i in my_list:
my_new_list.append(i *5)>>>print(my_new_list)[5,10,15,20,25]
Als alternative, hier ist eine Lösung mit der beliebten Pandas Paket:
import pandas as pd
s = pd.Series(my_list)>>> s *505110215320425
dtype: int64
Oder, wenn Sie wollen einfach nur die Liste:
>>>(s *5).tolist()[5,10,15,20,25]
Variablen-name beginnt mit caps nicht Pythonic. Und Sie sind Listen, nicht zahlen. Also ich würde vorschlagen, verwenden l1 und l2 als den Namen der variable.
Die Verwendung von " l " als variable wird auch abgeraten, da die Buchstaben 'l' und die Zahl 1 sind leicht zu verwechseln. Ich benutzt die Variablen, die in die OP ' s ursprüngliche Frage, und ich glaube, dass dein edit die Frage hat mehr Schaden als nützen.
Wenn Sie glauben, mein edit ist schlecht, können Sie Bearbeiten die Frage, um es zu verbessern. Auch wir können wählen, eine andere variable statt l1 wie l_1, list_1 usw. Diese sind alle besser als Num_1.
Eine spürbar schneller Ansatz besteht darin, die Multiplikation in a vectorized Art und Weise anstatt einer Schleife über die Liste. Numpy hat schon einen sehr einfach und praktische Möglichkeit, für diese, die Sie verwenden können.
Beachten Sie, dass dies nicht funktioniert mit Python-native-Listen. Wenn Sie das multiplizieren einer Zahl mit einer Liste wird es wiederholen Sie die Gegenstände von der Größe dieser Zahl.
Dieser code gibt alle Elemente im my_list zu 5's __mul__ Methode und liefert ein iterator-Objekt wie (in python 3.x). Sie können dann konvertieren Sie den iterator auf Liste mit list() integrierte Funktion (in Python ist es notwendig-2.x Sie brauchen das nicht, weil map Gegenzug eine Liste von Standard).
benchmarks:
In[18]:%timeit [5* i for i in my_list]463 ns ±10.6 ns per loop (mean ± std. dev. of 7 runs,1000000 loops each)In[19]:%timeit list(map((5).__mul__, my_list))784 ns ±10.7 ns per loop (mean ± std. dev. of 7 runs,1000000 loops each)In[20]:%timeit [5* i for i in my_list *100000]20.8 ms ±115µs per loop (mean ± std. dev. of 7 runs,10 loops each)In[21]:%timeit list(map((5).__mul__, my_list *100000))30.6 ms ±169µs per loop (mean ± std. dev. of 7 runs,10 loops each)In[24]: arr = np.array(my_list *100000)In[25]:%timeit arr *5899µs ±4.98µs per loop (mean ± std. dev. of 7 runs,1000 loops each)
Da ich denke, dass Sie sind neu in Python, können der lange Weg Durchlaufen, durch Ihre Liste mit for-Schleife und multiplizieren und fügen Sie jedes element in eine neue Liste.
mithilfe der for-Schleife
lst =[5,20,15]
product =[]for i in lst:
product.append(i*5)print product
mit list comprehension ist dies auch identisch mit for-Schleife, aber mehr "pythonic'
lst =[5,20,15]
prod =[i *5for i in lst]print prod
Wie wird der "lange Weg" in irgendeiner Weise besser? Es ist länger—damit schwieriger zu Lesen—und nicht einfacher zu schreiben.
okay, vielleicht hast du den falschen Eindruck auf meinen Titel und ich habe nie gesagt, es wurde nicht besser, nur versuchen ihm zu zeigen, wie es zu tun, ohne mit Verständnis. da auf meine Erfahrung, wenn ich neu in python, ich war nicht in der Lage zu begreifen, das Konzept zu begreifen, leicht.
Oh, okay. Kann ich nicht direkt betreffen, weil ich begann mit funktionalen Sprachen.
Ich sehe, auch dort. Ich bearbeitet habe, die Antwort auch auf die effiziente Weise, es zu tun.
from functools import partial as p
from operator import mul
map(p(mul,5),my_list)
ist eine Möglichkeit, Sie könnte es tun ... dein Lehrer kennt wahrscheinlich ein viel weniger kompliziert Weg, das war wahrscheinlich die in der Klasse behandelt
Sie können es tun, ohne die import-Anweisungen mithilfe eines lambda-Ausdrucks. Auch das snippet gibt ein map-Objekt, das ist nutzlos, es sei denn, gegossen in eine Liste. list(map(lambda x: 5*x, my_list ein)).
seine Nützlichkeit hängt davon ab, was Sie brauchen, zu tun ... es gibt viele Möglichkeiten der Bewältigung dieser Lösung (wie ich schon erwähnt ...)
Bitte nicht die Menschen lehren, zu verwenden map mit lambda; die sofortige brauchen Sie einen lambda, wärst du besser dran gewesen mit einer Liste Verständnis-oder generator-Ausdruck. Wenn Sie klug, Sie kann machen map Arbeit ohne lambdas eine Menge, z.B. in diesem Fall map((5).__mul__, my_list), obwohl in diesem speziellen Fall, Dank einiger Optimierungen in der byte-code-interpreter für einfache int Mathematik [x * 5 for x in my_list] schneller ist, als mehr Pythonic und einfacher.
Beste Weg ist die Verwendung von list comprehension:
def map_to_list(my_list, n):# multiply every value in my_list by n# Use list comprehension!
my_new_list =[i * n for i in my_list]return my_new_list
# To test:print(map_to_list([1,2,3],-1))
Können Sie nur verwenden einer list-comprehension:
Beachten Sie, dass eine list comprehension wird in der Regel ein effizienter Weg, um eine
for
Schleife:Als alternative, hier ist eine Lösung mit der beliebten Pandas Paket:
Oder, wenn Sie wollen einfach nur die Liste:
l1
undl2
als den Namen der variable.l1
wiel_1
,list_1
usw. Diese sind alle besser alsNum_1
.Können Sie es tun in-place-wie so:
Dies erfordert keine zusätzlichen Einfuhren und ist sehr pythonic.
Eine spürbar schneller Ansatz besteht darin, die Multiplikation in a vectorized Art und Weise anstatt einer Schleife über die Liste. Numpy hat schon einen sehr einfach und praktische Möglichkeit, für diese, die Sie verwenden können.
Beachten Sie, dass dies nicht funktioniert mit Python-native-Listen. Wenn Sie das multiplizieren einer Zahl mit einer Liste wird es wiederholen Sie die Gegenstände von der Größe dieser Zahl.
Wenn Sie möchten, dass ein reines Python-basierten Ansatz mit Hilfe einer list comprehension ist im Grunde den meisten Pythonic Weg zu gehen.
Neben der Liste und erfassen, als rein funktionalen Ansatz, können Sie auch gebaut-in
map()
Funktion wie folgt:Dieser code gibt alle Elemente im
my_list
zu5
's__mul__
Methode und liefert ein iterator-Objekt wie (in python 3.x). Sie können dann konvertieren Sie den iterator auf Liste mitlist()
integrierte Funktion (in Python ist es notwendig-2.x Sie brauchen das nicht, weilmap
Gegenzug eine Liste von Standard).benchmarks:
Da ich denke, dass Sie sind neu in Python, können der lange Weg Durchlaufen, durch Ihre Liste mit for-Schleife und multiplizieren und fügen Sie jedes element in eine neue Liste.
mithilfe der for-Schleife
mit list comprehension ist dies auch identisch mit for-Schleife, aber mehr "pythonic'
ist eine Möglichkeit, Sie könnte es tun ... dein Lehrer kennt wahrscheinlich ein viel weniger kompliziert Weg, das war wahrscheinlich die in der Klasse behandelt
map
mitlambda
; die sofortige brauchen Sie einenlambda
, wärst du besser dran gewesen mit einer Liste Verständnis-oder generator-Ausdruck. Wenn Sie klug, Sie kann machenmap
Arbeit ohnelambda
s eine Menge, z.B. in diesem Fallmap((5).__mul__, my_list)
, obwohl in diesem speziellen Fall, Dank einiger Optimierungen in der byte-code-interpreter für einfacheint
Mathematik[x * 5 for x in my_list]
schneller ist, als mehr Pythonic und einfacher.Mit Karte (nicht so gut, aber ein anderer Ansatz für das problem):
Beste Weg ist die Verwendung von list comprehension:
Gibt:
[-1, -2, -3]