Если у меня есть следующие переменные:переменная Преобразовать в другой переменной в лямбда
x = 100.0
y = "100.0"
Я желающему конвертировать y
в любой тип x
есть, но я пытаюсь сделать это с помощью лямбда ,
Если у меня есть следующие переменные:переменная Преобразовать в другой переменной в лямбда
x = 100.0
y = "100.0"
Я желающему конвертировать y
в любой тип x
есть, но я пытаюсь сделать это с помощью лямбда ,
Если существует экземпляр создателя для типа x
, который принимает один аргумент типа y
и делает правильные вещи, вы могли бы просто назвать type(x)(y)
:
>>> x = 100.0
>>> y = "100.0"
>>> type(x)
<class 'float'>
>>> type(x)(y)
100.0
Это работает для примера, приведенного в ОП, но в других случаях будут давать тонкие или ошибки или прямые сбои.
Но «через лямбда» не имеет большого смысла. Лямбда - это определенный, не очень мощный синтаксис для определения анонимной функции. Это не особый вид функции. Вы можете написать
>>> def f(x,y): return type(x)(y)
>>> f(100.0, "200.0")
200.0
Если вы действительно настаивали, вы могли бы написать
>>> f = lambda x,y: type(x)(y)
>>> f(100.0, "200.0")
200.0
, но это будет делать большинство программистов Python интересно, если вы новичок в Python, потому что нет никаких причин, чтобы использовать лямбда в определите анонимную функцию и сразу же дайте ей имя.
Это работает для явного случая OP, потому что просто существует метод создания экземпляра одного аргумента для float, который принимает строку и интерпретирует ее как float. Вне некоторых очень узких случаев, подобных этому, этот подход, скорее всего, не сработает, простым примером будет «x = []; y = '100,00''. – msw
@msw: ну, да. Только принуждения, которые поддерживаются целевым типом; что-нибудь еще угадывало бы перед лицом двусмысленности, и это искушение, которое мы официально должны отказать. – DSM
Какова общая цель этой задачи? –
Что бы вы хотели, если 'x = 100' и' y = '1.5''? – msw