2016-03-21 2 views
-1

Если у меня есть следующие переменные:переменная Преобразовать в другой переменной в лямбда

x = 100.0 
y = "100.0" 

Я желающему конвертировать y в любой тип x есть, но я пытаюсь сделать это с помощью лямбда ,

+1

Какова общая цель этой задачи? –

+0

Что бы вы хотели, если 'x = 100' и' y = '1.5''? – msw

ответ

2

Если существует экземпляр создателя для типа 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, потому что нет никаких причин, чтобы использовать лямбда в определите анонимную функцию и сразу же дайте ей имя.

+0

Это работает для явного случая OP, потому что просто существует метод создания экземпляра одного аргумента для float, который принимает строку и интерпретирует ее как float. Вне некоторых очень узких случаев, подобных этому, этот подход, скорее всего, не сработает, простым примером будет «x = []; y = '100,00''. – msw

+1

@msw: ну, да. Только принуждения, которые поддерживаются целевым типом; что-нибудь еще угадывало бы перед лицом двусмысленности, и это искушение, которое мы официально должны отказать. – DSM

Смежные вопросы