Das Problem hier ist Ihr Missverständnis was map
tut. Hier ist ein repräsentatives Beispiel. Ich habe eine Art "Identitäts" -Funktion erstellt, die nur eine Zahl wiederholt und zurückgibt. Ich werde map
diese Funktion auf eine Liste, damit Sie sehen können, was gedruckt ist:
In [382]: def foo(x):
...: print('In foo: {}'.format(x))
...: return x
...:
In [386]: list(map(foo, [1, 2, 3]))
In foo: 1
In foo: 2
In foo: 3
Out[386]: [1, 2, 3]
Hinweis hier, dass jedes Element in der Liste foo
wiederum übergeben wird, durch map
. foo
erhält keine Liste. Ihr Fehler dachte, dass es so war, also haben Sie versucht, über eine Nummer zu iterieren, die zu dem Fehler führte, den Sie sehen.
Was Sie in Ihrem Fall tun müssen, ist square
wie folgt definieren:
In [387]: def square(x):
...: return x ** 2
...:
In [388]: list(map(square, [1, 2, 3]))
Out[388]: [1, 4, 9]
square
sollte unter der Annahme arbeiten, dass es einen skalaren erhält.
Alternativ können Sie ein lambda
auf den gleichen Effekt nutzen:
In [389]: list(map(lambda x: x ** 2, [1, 2, 3]))
Out[389]: [1, 4, 9]
Beachten Sie dies die funktionale Programmierung ist Art und Weise tun. Als Referenz wäre es billiger, ein Listenverständnis zu verwenden:
In [390]: [x ** 2 for x in [1, 2, 3]]
Out[390]: [1, 4, 9]
Ich sehe, dass der Code, den Sie posteten, eine merkwürdige Einrückung hat, können Sie das regeln? – DarkCygnus
'map' hat eine Funktion für jedes Element - in Ihrem Fall ein Skalar. –
Wenn Sie "Quadrat" zu "lst_3" zuordnen, wird jede Zahl der Reihe nach an "Quadrat" übergeben. Sie müssen nicht über eine Nummer _ermitteln_. –