Использовать печать внутри лямбда

Я пытаюсь использовать печать внутри лямбда. Что-то вроде того:

lambda x: print x 

Я понимаю, что в Python 2.7 печать не является функцией. Итак, в основном, мой вопрос: есть ли прекрасный способ использовать функцию print as в Python 2.7?

3 Solutions collect form web for “Использовать печать внутри лямбда”

Вы можете импортировать print_function из __future__ и использовать его как функцию, подобную этой

 from __future__ import print_function map(print, [1, 2, 3]) # 1 # 2 # 3 

Если вы не хотите import from __future__ вы можете просто записать lambda на стандартный вывод:

 >>>import sys >>>l = lambda x : sys.stdout.write(x) >>>l('hi') 'hi' 

Вопрос в том, что касается Python 2, но я оказался здесь из Google, пытаясь использовать функцию печати внутри лямбда в Python 3. Я добавляю этот ответ для контекста для других, которые приходят сюда одинаково.

Если вы хотите видеть только код, который работает, а не то, как я туда попал, пропустите последний образец кода внизу. Я хотел четко документировать, что не работает в учебных целях.

Желаемый результат

Предположим, вы хотите определить lambda print_list который печатает каждый элемент списка с новой print_list между ними.

 lst = [1, 2, 3] print_list = lambda lst: ... 

Желаемый результат:

 1 2 3 

И не должно быть неиспользованного возвращаемого значения.

Попытка 1 – карта не оценивает функцию печати в Python 3

Чтобы начать, вот что не работает в Python 3:

 map(print, lst) 

Тем не менее, вывод несколько неконтуитивно не печатаемых строк, потому что вызов карты в Python 3 возвращает итератор вместо оцененного списка.

Вывод:

 n/a 

Возвращаемое значение:

 <map at 0x111b3a6a0> 

Попытка 2 – Оценить итератор карты

Вы можете реализовать печать, передав результат map в list(...) , который производит идеальный вывод, но имеет побочный эффект при возврате списка нулей (как оценивается в REPL).

 list(map(print, lst)) 

Вывод:

 1 2 3 

Возвращаемое значение:

 [None, None, None] 

Вы можете обойти это, используя условное обозначение переменной подчеркивания:

 _ = list(map(print, lst)) 

Аналогичный подход вызывает печать внутри понимания списка:

 [print(i) for i in lst] 

Мне не нравятся эти подходы, потому что они оба по-прежнему генерируют неиспользуемое возвращаемое значение.

Попытка 3 – применить оператор распаковки к итератору карты

Как это:

 [*map(print, [1, 2, 3])] 

(Это все равно возвращает список нулей, который не идеален.)

В комментариях, приведенных выше, @thefourtheye предлагает использовать однострочный цикл:

 for item in [1, 2, 3]: print(item) 

Это отлично подходит для большинства случаев и позволяет избежать побочного эффекта. Попытка поместить это в лямбду бросает SyntaxError. Я пробовал обертывать его в parens без успеха; хотя, вероятно, есть способ достичь этого, я не понял этого.

Попытка 4 – применить оператор распаковки внутри вызова печати

Ответ, к которому я пришел, заключается в том, чтобы взорвать список внутри вызова печати вместе с использованием разделителя arg:

 print(*lst, sep='\n') 

Вывод:

 1 2 3 

Это дает ожидаемый результат без возвращаемого значения.

Наконец, давайте обернуть его в лямбду, чтобы использовать по желанию:

 print_list = lambda lst: print(*lst, sep='\n') print_list([1, 2, 3]) 

Это было лучшее решение для моего использования в Python 3.

Связанные вопросы

  • Почему map (print, a_list) не работает?
  • Печать не печатает, когда она находится на карте, Python
  • Почему с Django не документирована ручная интеграция с Django?
  • Как читать csv в многомерный массив
  • Сортировка подмножества списка python с тем же относительным порядком, что и в другом списке
  • Могу ли я выполнить scrapy (python) сканирование вне проекта dir?
  • Почему float () быстрее, чем int ()?
  • Python - почему я могу импортировать модули без __init__.py?
  • Невозможно установить `pip` для` python 3.3`, но отлично работает для `python 2.7`
  • Ошибка сегментации Python?
  •  
    Interesting Posts for Van-Lav

    Как добавляет и удаляет сбор мусора Pythonic с массивом numpy?

    Плотность с питоном, создающим дифракционную картину с интегралами Бесселя, но она не перестает работать

    Проверьте, является ли строка верхним, нижним или смешанным регистром в Python

    Как использовать API-интерфейс Python Facebook Graph

    Пример использования привязок python для библиотеки SVM, LIBSVM

    Странные символы при чтении содержимого файла

    что блокирует и не блокирует веб-сервер, какая разница между ними?

    копирование списков python – это глубокая копия или мелкая копия и как это делается?

    Длинная целочисленная ошибка переполнения и разрешение

    Вставить текст в PNG

    Python: найти принципиальное значение целого численного

    Как сделать класс подкласса matplotlib?

    Фильтрация списков: понимание списка по сравнению с lambda + filter

    Django – Конфликтующие модели в приложении, один и тот же путь, но в другом случае

    Noob-Ready Cython Tutorials

    Python - лучший язык программирования в мире.