한 줄에 괄호없이 목록 인쇄


162

나는 파이썬으로 된 목록을 가지고있다.

names = ["Sam", "Peter", "James", "Julian", "Ann"]

일반 "[]없이 한 줄로 배열을 인쇄하고 싶습니다

names = ["Sam", "Peter", "James", "Julian", "Ann"]
print (names)

출력을 다음과 같이 제공합니다.

["Sam", "Peter", "James", "Julian", "Ann"]

그 형식은 내가 원하는 형식이 아닙니다. 대신이 형식을 원합니다.

Sam, Peter, James, Julian, Ann

참고 : 한 행에 있어야합니다.

답변:


242
print(', '.join(names))

이것은 들리는 것처럼 목록의 모든 요소를 ​​가져 와서 결합합니다 ', '.


9
의 일부 요소 names가 문자열이 아닌 경우 print(', '.join(map(str,name)))대신 사용하십시오.
Anonymous

78

여기 간단한 것이 있습니다.

names = ["Sam", "Peter", "James", "Julian", "Ann"]
print(*names, sep=", ")

별표는 목록의 압축을 풀고 목록의 모든 요소를 ​​반환합니다.


8
에서 python 2.7.6, 이것은입니다 SyntaxError: invalid syntax.
프레드릭 가우스

1
@FredrickGauss 추가 from __future__ import print_function하면 파이썬 2에서도 작동합니다.
Anthony Sottile

1
문자열이 아닌 문자열에서도 작동하므로 정답입니다.
otocan

41

일반 솔루션은 문자열이 아닌 배열에서 작동합니다.

>>> print str(names)[1:-1]
'Sam', 'Peter', 'James', 'Julian', 'Ann'

9
명시된 요구 사항을 충족하지 않습니다. 따옴표없이 결과 이름을 표시하는 OP의 예를 참고하십시오.
John Y

1
@SteveBennett 답변에서 슬라이싱 [1 : -1]을 설명해 주시겠습니까? 방금 파이썬을 배우기 시작했습니다. 감사합니다.
Charan

3
str(names)와 같은 문자열을 생성합니다 ['Sam', 'Peter'...'Ann']. 우리는 대괄호를 원하지 않기 때문에 두 번째 문자에서 두 번째 마지막 문자로 슬라이스합니다.
Steve Bennett

22

입력 배열이 정수 유형 인 경우 먼저 배열을 문자열 유형 배열 로 변환 한 다음 원하는 join방법으로 결합 ,하거나 공백을 만드는 방법을 사용해야 합니다. 예 :

>>> arr = [1, 2, 4, 3]
>>> print(", " . join(arr))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> sarr = [str(a) for a in arr]
>>> print(", " . join(sarr))
1, 2, 4, 3
>>>

정수와 문자열을 결합하는 join을 직접 사용하면 위와 같이 오류가 발생합니다.


18

두 가지 답변이 있습니다. 먼저 'sep'설정 사용

>>> print(*names, sep = ', ')

다른 하나는 아래에 있습니다

>>> print(', '.join(names))


7

','.join(list)목록의 모든 항목이 문자열 인 경우에만 작동합니다. 숫자 목록을 쉼표로 구분 된 문자열로 변환하려는 경우. 등 a = [1, 2, 3, 4]으로 '1,2,3,4'다음 중 하나를 수

str(a)[1:-1] # '1, 2, 3, 4'

또는

str(a).lstrip('[').rstrip(']') # '1, 2, 3, 4'

이것은 중첩 목록을 제거하지는 않습니다.

다시 목록으로 변환하려면

a = '1,2,3,4'
import ast
ast.literal_eval('['+a+']')
#[1, 2, 3, 4]

4

목록을 반복 end=" "하여 한 줄로 유지해야합니다.

names = ["Sam", "Peter", "James", "Julian", "Ann"]
    index=0
    for name in names:
        print(names[index], end=", ")
        index += 1

OP는 한 줄에 있어야한다고 말합니다.
Ali

2

인쇄 (* 이름)

공백으로 분리하여 인쇄하려면 파이썬 3에서 작동합니다. .join () 솔루션으로 쉼표 또는 그 밖의 다른 것이 필요하면


1

이것이 다른 사람들처럼 효율적인지 모르겠지만 간단한 논리가 항상 작동합니다.

import sys
name = ["Sam", "Peter", "James", "Julian", "Ann"]
for i in range(0, len(names)):
    sys.stdout.write(names[i])
    if i != len(names)-1:
        sys.stdout.write(", ")

산출:

샘, 피터, 제임스, 줄리안, 앤


0

다음 함수는 목록을 가져와 목록 항목의 문자열을 반환합니다. 그런 다음 로깅 또는 인쇄 목적으로 사용할 수 있습니다.

def listToString(inList):
    outString = ''
    if len(inList)==1:
        outString = outString+str(inList[0])
    if len(inList)>1:
        outString = outString+str(inList[0])
        for items in inList[1:]:
            outString = outString+', '+str(items)
    return outString

0

정수형 배열의 경우 먼저 문자열 형식으로 변경하고 대괄호없이 깨끗한 출력을 얻으려면 join 함수를 사용해야합니다.

    arr = [1, 2, 3, 4, 5]    
    print(', '.join(map(str, arr)))

출력-1, 2, 3, 4, 5

문자열 유형의 배열의 경우 대괄호없이 깨끗한 출력을 얻으려면 join 함수를 직접 사용해야합니다.

    arr = ["Ram", "Mohan", "Shyam", "Dilip", "Sohan"]
    print(', '.join(arr)

출력-Ram, Mohan, Shyam, Dilip, Sohan

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.