문자 목록을 문자열로 변환 경우 : a = [‘a’,’b’,’c’,’d’] 단일 문자열로 어떻게

문자 목록이있는 경우 :

a = ['a','b','c','d']

단일 문자열로 어떻게 변환합니까?

a = 'abcd'


답변

join빈 문자열 의 메소드를 사용하여 다음 과 같이 빈 문자열과 함께 모든 문자열을 결합하십시오.

>>> a = ['a', 'b', 'c', 'd']
>>> ''.join(a)
'abcd'

답변

이것은 JavaScript와 Ruby와 같은 많은 인기있는 언어에서 작동합니다. 왜 파이썬에서는 그렇지 않습니까?

>>> ['a', 'b', 'c'].join('')
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'join'

이상하게도 파이썬에서는 join메소드가 str클래스에 있습니다.

# this is the Python way
"".join(['a','b','c','d'])

JavaScript 나 다른 인기있는 스크립트 언어와 같이 객체 join의 메소드가 아닌 이유 는 무엇 list입니까? 파이썬 커뮤니티가 어떻게 생각하는지에 대한 예입니다. join은 문자열을 반환하므로 문자열은 목록 클래스가 아닌 문자열 클래스에 배치되어야합니다. 따라서 str.join(list)메서드는 다음을 의미합니다. str구분 기호로 사용하여 목록을 새 문자열로 조인합니다 (이 경우 str빈 문자열 임).

어떻게 든 나는 잠시 후이 사고 방식을 좋아해야했다. 파이썬 디자인에서 많은 것들에 대해 불평 할 수는 있지만 일관성에 대해서는 불평 할 수 없습니다.


답변

Python 인터프리터가 이전 버전 인 경우 (예 : 일부 이전 Linux 배포판에서 일반적으로 사용되는 1.5.2) join()이전 문자열 객체에서 메소드로 사용 가능 하지 않을 수 있으며 대신 문자열 모듈을 사용해야합니다. 예:

a = ['a', 'b', 'c', 'd']

try:
    b = ''.join(a)

except AttributeError:
    import string
    b = string.join(a, '')

문자열 b은입니다 'abcd'.


답변

가장 빠른 방법 일 수 있습니다.

>> from array import array
>> a = ['a','b','c','d']
>> array('B', map(ord,a)).tostring()
'abcd'

답변

감소 기능도 작동합니다

import operator
h=['a','b','c','d']
reduce(operator.add, h)
'abcd'

답변

목록에 숫자가 포함 된 경우 map()와 함께 사용할 수 있습니다 join().

예 :

>>> arr = [3, 30, 34, 5, 9]
>>> ''.join(map(str, arr))
3303459

답변

h = ['a','b','c','d','e','f']
g = ''
for f in h:
    g = g + f

>>> g
'abcdef'