Wenn ich die folgenden Variablen:convert Variable einer anderen Variablen in einem Lambda eingeben
x = 100.0
y = "100.0"
Ich wünsche y
in umwandeln, was auch immer die Art der x
ist, aber ich versuche, so über eine Lambda zu tun .
Wenn ich die folgenden Variablen:convert Variable einer anderen Variablen in einem Lambda eingeben
x = 100.0
y = "100.0"
Ich wünsche y
in umwandeln, was auch immer die Art der x
ist, aber ich versuche, so über eine Lambda zu tun .
Wenn es eine Instanz Konzept für Typ existiert x
, die ein einzelnes Argument vom Typ nimmt y
und das Richtige tut, könnte man einfach anrufen type(x)(y)
:
>>> x = 100.0
>>> y = "100.0"
>>> type(x)
<class 'float'>
>>> type(x)(y)
100.0
Dies ist für das Beispiel im OP gegeben arbeitet, aber wird in anderen Fällen subtile oder Fehler oder direkte Fehler ergeben.
Aber "über ein Lambda" macht nicht viel Sinn. Ein Lambda ist nur eine bestimmte, nicht sehr mächtige Syntax, um eine anonyme Funktion zu definieren. Es ist keine spezielle Art von Funktion. Sie können
>>> def f(x,y): return type(x)(y)
>>> f(100.0, "200.0")
200.0
schreiben Wenn Sie wirklich darauf bestanden, Sie
>>> f = lambda x,y: type(x)(y)
>>> f(100.0, "200.0")
200.0
schreiben könnte, aber das wird die meisten Python-Programmierer fragen sich, wenn Sie auf Python neu sind, weil es keinen Grund gibt, einen Lambda zu verwenden, um Definieren Sie eine anonyme Funktion und geben Sie ihr sofort einen Namen.
Dies funktioniert für den expliziten OP-Fall, weil es einfach eine Methode zum Erstellen von Einargument-Instanzen von float gibt, die zufällig einen String nimmt und ihn als Float interpretiert. Abgesehen von einigen sehr engen Fällen wie diesem, wird dieser Ansatz sehr wahrscheinlich nicht funktionieren, ein einfaches Beispiel wäre "x = []; y = '100.00''. – msw
@msw: nun ja. Nur Nötigungen, die nativ vom Zieltyp unterstützt werden, funktionieren; Alles andere würde angesichts der Zweideutigkeit raten, und das ist eine Versuchung, die wir offiziell ablehnen sollten. – DSM
Was ist der Hauptzweck dieser Aufgabe? –
Was möchten Sie tun, wenn 'x = 100' und' y = '1.5'' sind? – msw