[python] 목록 항목을 인쇄하는 Pythonic 방법

이보다 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 3.x를 사용한다고 가정합니다.

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

from __future__ import print_functionmgilson이 주석에 언급 한대로를 사용하여 Python 2.x에서 동일한 동작을 얻을 수 있습니다 .

Python 2.x의 print 문을 사용하면 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] 모든 항목을 인쇄하지만 끝에 None 유형을 제공합니다.


답변

Python 2. *의 경우 :

Person 클래스에 대해 __str __ () 함수를 오버로드하면 map (str, …)으로 부분을 생략 할 수 있습니다. 이를위한 또 다른 방법은 다음과 같이 함수를 만드는 것입니다.

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

...

write_list(MyList)

Python 3. * 에는 print () 함수에 대한 인수 sep 가 있습니다. 문서를 살펴보십시오.


답변

@lucasg의 답변 확장 (받은 댓글에서 영감을 얻음) :

형식화 된 목록 출력 을 얻으려면 다음 행을 따라 수행 할 수 있습니다.

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

01, 02, 05

이제는 ", "구분 기호 (항목 사이에만, 끝이 아님) '02d'%x제공하고 와 결합 된 서식 지정 문자열은 각 항목에 대해 서식이 지정된 문자열을 제공합니다 x.이 경우에는 두 자리 정수로 서식이 지정되고 왼쪽이 0으로 채워집니다.


답변

각 콘텐츠를 표시하기 위해 다음을 사용합니다.

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))

간단하고 읽기 쉬우 며 형식 문자열과 함께 사용할 수 있습니다.