programing

문자 목록을 문자열로 변환

yoursource 2022. 9. 23. 22:23
반응형

문자 목록을 문자열로 변환

문자 목록이 있는 경우:

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

단일 문자열로 변환하려면 어떻게 해야 하나요?

a = 'abcd'

를 사용합니다.join빈 문자열이 모든 문자열을 결합하는 메서드는 다음과 같습니다.

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

이것은 JavaScript나 Ruby와 같은 많은 인기 언어에서 작동하는데, Python에서는 왜 안 될까요?

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

이상하게도 Python에서는join메서드는str클래스:

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

왜죠join의 메서드가 아닙니다.listJavaScript 또는 기타 일반적인 스크립트 언어에서와 같은 오브젝트?이것은 Python 커뮤니티가 생각하는 방법의 한 예이다.join은 문자열을 반환하기 때문에 리스트클래스가 아닌 문자열클래스에 배치해야 합니다.str.join(list)method means: 목록을 새 문자열에 참여시킵니다.str(이 경우) 구분자로서str는 빈 문자열입니다).

왠지 오랜만에 이런 생각이 너무 좋아졌어요.Python의 디자인은 많은 것에 대해 불평할 수 있지만 일관성에 대해서는 불평할 수 없습니다.

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'

게다가.str.join가장 자연스러운 방법일 가능성이 있습니다.io.StringIO학대하다writelines모든 요소를 한 번에 작성하려면:

import io

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

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

인쇄:

abcd

이 접근방식을 발전기 기능 또는 반복 가능한 기능과 함께 사용하는 경우tuple또는list임시 목록 작성을 저장합니다.join는 적절한 사이즈를 한번에 할당하기 위해 사용합니다(메모리 면에서는1 문자 문자열의 리스트는 매우 비쌉니다).

메모리가 부족하고, 평가 대상 오브젝트가 게으른 경우, 이 접근방식이 최선의 솔루션입니다.

다음과 같이 사용할 수도 있습니다.

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

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

>>> from functools import reduce

원래부터reduce()는 Python 3에서 삭제되어 에 존재합니다.

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

반응형