[python] 목록을 “올바르게”인쇄하는 방법은 무엇입니까?

그래서 목록이 있습니다.

['x', 3, 'b']

그리고 출력은 다음과 같습니다.

[x, 3, b]

파이썬에서 어떻게 할 수 있습니까?

그렇게하면 str(['x', 3, 'b'])따옴표가있는 하나를 얻지 만 따옴표는 원하지 않습니다.



답변

Python 2 :

mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))

Python 3에서 (여기서는 print더 이상 구문 기능이 아닌 내장 함수) :

mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))

둘 다 반환 :

[x, 3, b]

이것은 mylist의map() 각 요소에 대해 str을 호출 하는 함수를 사용하여 다음과 같이 하나의 문자열로 결합되는 새로운 문자열 목록을 생성합니다 . 그런 다음 문자열 형식화 연산자가 in 대신 in 문자열을 대체합니다 .str.join()%%s"[%s]"


답변

이것은 간단한 코드이므로 초보자라면 충분히 쉽게 이해할 수 있어야합니다.

    mylist = ["x", 3, "b"]
    for items in mylist:
        print(items)

원하는대로 따옴표없이 모두 인쇄합니다.


답변

인쇄 만 사용 :

>>> l = ['x', 3, 'b']
>>> print(*l, sep='\n')
x
3
b
>>> print(*l, sep=', ')
x, 3, b


답변

Python3을 사용하는 경우 :

print('[',end='');print(*L, sep=', ', end='');print(']')


답변

를 사용하는 대신 반복자를 허용하는 map기능이있는 생성기 표현식을 사용하는 것이 좋습니다 join.

def get_nice_string(list_or_iterator):
    return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"

다음 join은 문자열 클래스의 멤버 함수입니다 str. 하나의 인수, 즉 문자열 목록 (또는 반복자)을 취한 다음 모든 요소가 연결된 새 문자열을 반환합니다 (이 경우) ,.


답변

인수에 대해 제거 할 문자가 포함 된 문자열이 뒤에 오는 인수 for translate()메서드 를 사용하여 문자열에서 원하지 않는 모든 문자를 삭제할 수 있습니다 .Nonetabledeletechars

lst = ['x', 3, 'b']

print str(lst).translate(None, "'")

# [x, 3, b]

2.6 이전 버전의 Python을 사용하는 경우 인수로 전달하는 기능이 Python 2.6까지 추가되지 않았기 때문에 대신 string모듈의 translate()함수 를 사용해야합니다 . 사용하면 다음과 같습니다.Nonetable

import string

print string.translate(str(lst), None, "'")

string.translate()기능을 사용하는 것은 2.6 이상에서도 작동하므로 사용하는 것이 좋습니다.


답변

다음은 @TokenMacGuy의 한 줄짜리 단계를 보여주는 대화식 세션입니다. 먼저 그는 map함수를 사용하여 목록의 각 항목을 문자열로 변환합니다 (실제로 그는 이전 목록의 항목을 변환하지 않고 새 목록을 만들고 있음). 그런 다음 문자열 메서드 join를 사용하여 해당 문자열을', ' 합니다. 나머지는 문자열 형식화로 매우 간단합니다. (편집 :이 인스턴스는 간단합니다. 일반적으로 문자열 형식은 다소 복잡 할 수 있습니다.)

using join은 여러 하위 문자열에서 문자열을 만드는 간단하고 효율적인 방법이며, 문자열에 문자열을 연속적으로 추가하는 것보다 훨씬 효율적입니다.

>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'