Я хотел бы знать, есть ли лучший способ распечатать все объекты в списке Python, чем этот:
myList = [Person("Foo"), Person("Bar")]
print("\n".join(map(str, myList)))
Foo
Bar
Я читал, что это не совсем хорошо:
myList = [Person("Foo"), Person("Bar")]
for p in myList:
print(p)
Разве что-то вроде:
print(p) for p in myList
Если нет, то мой вопрос ... почему? Если мы можем делать такие вещи с исчерпывающими списками, почему бы не сделать это в виде простого утверждения вне списка?
python
list
printing
list-comprehension
Гийом Вуарон
источник
источник
for p in myList
«не очень хорошее»?Ответы:
Предполагая, что вы используете Python 3.x:
Вы можете получить такое же поведение на Python 2.x, используя
from __future__ import print_function
, как отметил mgilson в комментариях.С оператором печати в Python 2.x вам понадобится какая-то итерация, относительно вашего вопроса о том, что он
print(p) for p in myList
не работает, вы можете просто использовать следующее, которое делает то же самое и по-прежнему остается одной строкой:Для решения, которое использует
'\n'.join()
, я предпочитаю понимание и генераторы списков,map()
поэтому я бы, вероятно, использовал следующее:источник
from __future__ import print_function
python2.6 и новее.map()
генератором и? Создатель Python также предпочитает понимание и генераторыmap()
.[F(x) for x in S]
яснее, чемmap(F, S)
. Производительность здесь не рассматривается, но я ожидаю, что разница в скорости будет незначительной. В любом случае, я был сбит с толку из-за отрицательного голоса, извините, я предположил, что это вы!Я использую это все время:
источник
format()
, заменитеstr(x)
print " ".join(["{:02d}".format(x) for x in l])
[print(a) for a in list]
даст кучу типов None в конце, хотя распечатает все элементыисточник
Для Python 2. *:
Если вы перегружаете функцию __str __ () для своего класса Person, вы можете опустить часть с помощью map (str, ...). Другой способ - создать функцию, как вы писали:
В Python 3. * есть аргумент sep для функции print (). Взгляните на документацию.
источник
Расширение ответа @lucasg (на основе полученного комментария):
Чтобы получить форматированный вывод списка, вы можете сделать что-нибудь в этом роде:
Теперь
", "
предоставляет разделитель (только между элементами, а не в конце), а строка форматирования,'02d'
объединенная с,%x
дает отформатированную строку для каждого элементаx
- в данном случае отформатированную как целое число с двумя цифрами, заполненными нулями слева.источник
Для отображения каждого контента я использую:
Пример использования в функции:
Надеюсь, я помог.
источник
Думаю, это наиболее удобно, если вы просто хотите увидеть содержимое в списке:
Простой, удобный для чтения и может использоваться вместе со строкой формата.
источник
Вопрос OP: существует ли что-то вроде следующего, если нет, то почему
Ответ: существует, а именно:
В основном, используйте
[]
для понимания списка и избавьтесь отprint
печатиNone
. Чтобы понять, почемуprint
отпечаткиNone
видят этоисточник
Недавно я сделал генератор паролей, и хотя я ОЧЕНЬ НОВИНКА в python, я придумал это как способ отображения всех элементов в списке (с небольшими изменениями в соответствии с вашими потребностями ...
Как я уже сказал, Я ОЧЕНЬ НОВИНКА в Python, и я уверен, что это неуклюжий способ для эксперта, но я здесь для другого примера.
источник
Предполагая, что вы в порядке с напечатанным списком [1,2,3], тогда простой способ в Python3:
Выполнение этого дает следующий результат:
источник