2016-09-05 2 views
-1

я хочу привести, используя стиль «ул + =» в лямбда-функцииКомбинирования символов с использованием лямбды в питоне

примера (с ошибкой):

t=lambda text text : [c for c in text str += c.upper()] 
t(['h','e','l','l','o']) 

Я ожидаю результата как:

HELLO 

Как я могу исправить выше лямбда-функции с переменной состояния, как стиль «ул + =»

если «ул + =» стиль не возможно, пожалуйста, подробно объясните, почему невозможно. Не просто коротко ответьте на это неправильно.

+1

Есть по крайней мере две синтаксические ошибки в коде выше. Пожалуйста, отправьте действительный Python. –

+0

Кстати, хотя вы _can_ объединяете строки, используя '+ =', лучше использовать '.join', см. [Почему? '.join() быстрее, чем + = в python?] (Http://stackoverflow.com/questions/39312099/why-is-join-fast-than-in-python) и связанных страницах для получения дополнительной информации. –

+0

Обратите внимание, что назначение выражения lambda для имени поражает всю цель выражения лямбда и прямо рекомендуется в PEP-8. – TigerhawkT3

ответ

4

Я думаю, что вы имеете в виду это:

>>> t = lambda text: ''.join(text).upper() 
>>> t(['h','e','l','l','o']) 
'HELLO' 

Документация: Lambda Expressions

+1

Является ли более эффективным выполнение '.upper()' после 'join'? –

+0

@Chris_Rands Возможно. Я просто подражал стилю OP – TerryA

+0

«Я хочу использовать стиль' str + = 'в лямбда-функции. ' –

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