Питонический способ печати элементов списка


Я хотел бы знать, есть ли лучший способ распечатать все объекты в списке 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

Если нет,то мой вопрос... зачем ? Если мы можем делать такие вещи с исчерпывающими списками, почему бы не в виде простого утверждения вне списка ?

7 83

7 ответов:

предполагая, что вы используете Python 3.x:

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

вы можете получить такое же поведение на Python 2.x с помощью from __future__ import print_function, как отметил мгилсон в комментариях.

с оператором печати на Python 2.x вам понадобится какая-то итерация, касающаяся вашего вопроса о print(p) for p in myList не работает, вы можете просто использовать следующее, что делает то же самое и по-прежнему одна строка:

for p in myList: print p

для решения, которое использует '\n'.join(), Я предпочитаю список понимания и генераторы за map() поэтому я бы, вероятно, использовать следующее:

print '\n'.join(str(p) for p in myList) 

Я использую это все время:

#!/usr/bin/python

l = [1,2,3,7] 
print "".join([str(x) for x in l] )

[print(a) for a in list] даст кучу ни одного типа в конце, хотя он печатает все элементы

Для Python 2.*:

Если вы перегружаете функцию _ _ str__ () для вашего класса Person, вы можете опустить часть с map(str, ...). Другой способ для этого-создание функции, как вы и писали:

def write_list(lst):
    for item in lst:
        print str(item) 

...

write_list(MyList)

есть в Python 3.* аргумент sep для функции print (). Взгляните на документацию.

расширяя ответ @ lucasg (вдохновленный комментарием, который он получил):

и в формате вывод списка, вы можете сделать что-то в этом роде:

l = [1,2,5]
print ", ".join('%02d'%x for x in l)

01, 02, 05

теперь ", " обеспечивает разделитель (только между элементами, а не в конце) и строку форматирования '02d'в сочетании с %x дает форматированную строку для каждого элемента x - в этом случае форматируется как целое число с двумя цифрами, слева-заполняется нулями.

для отображения каждого контента я использую:

mylist = ['foo', 'bar']
indexval = 0
for i in range(len(mylist)):     
    print(mylist[indexval])
    indexval += 1

пример использования функции:

def showAll(listname, startat):
   indexval = startat
   try:
      for i in range(len(mylist)):
         print(mylist[indexval])
         indexval = indexval + 1
   except IndexError:
      print('That index value you gave is out of range.')

надеюсь, что помогла.

Я думаю, что это наиболее удобно, если вы просто хотите увидеть содержимое в списке:

myList = ['foo', 'bar']
print('myList is %s' % str(myList))

простой, легко читаемый и может использоваться вместе с форматной строкой.