development

문자 목록을 문자열로 변환

big-blog 2020. 2. 22. 11:42
반응형

문자 목록을 문자열로 변환


문자 목록이있는 경우 :

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'

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

>>> g
'abcdef'

join빈 구분 기호와 함께 사용

h = ['a','b','c','d','e','f']
print ''.join(h)

또는 연산자 reduce와 함께 사용add

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

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

예 :

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

>> 3303459

str.join가장 자연스러운 방법 외에도 모든 요소를 ​​한 번에 작성 io.StringIO하고 사용하는 것이 가능 writelines합니다.

import io

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

out = io.StringIO()
out.writelines(a)
print(out.getvalue())

인쇄물:

abcd

생성기 함수 또는 a tuple또는 a 가 아닌 iterable과 함께이 접근법을 사용 하면 올바른 크기를 한 번에 할당하는 list임시 목록 작성을 저장합니다 join(1 문자 문자열 목록은 메모리 측면에서 매우 비쌉니다) ).

메모리가 부족하고 느리게 평가 된 객체를 입력으로 사용하는 경우이 방법이 가장 좋습니다.


다음 operator.concat()과 같이 사용할 수도 있습니다 .

>>> from operator import concat
>>> a = ['a', 'b', 'c', 'd']
>>> reduce(concat, a)
'abcd'

Python 3을 사용하는 경우 앞에 추가해야합니다.

>>> from functools import reduce

내장 reduce()이 Python 3에서 제거되어 현재에 살고 있기 때문에 functools.reduce().


    str = ''
    for letter in a:
        str += letter
    print str

참고 URL : https://stackoverflow.com/questions/4481724/convert-a-list-of-characters-into-a-string



반응형