문자열을 문자 배열로 나누는 것에 대한 답변을 웹에서 살펴 보았지만 간단한 방법을 찾을 수없는 것 같습니다.
str.split(//)
루비처럼 작동하지 않는 것 같습니다. 루핑 없이이 작업을 수행하는 간단한 방법이 있습니까?
답변
답변
문자열을 가져 와서 list ()에 전달하십시오.
s = "mystring"
l = list(s)
print l
답변
list () 없이이 간단한 방법으로 수행 할 수도 있습니다.
>>> [c for c in "foobar"]
['f', 'o', 'o', 'b', 'a', 'r']
답변
한 번에 한 문자 씩 문자열을 처리하려는 경우. 다양한 옵션이 있습니다.
uhello = u'Hello\u0020World'
목록 이해 사용하기 :
print([x for x in uhello])
산출:
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
지도 사용하기 :
print(list(map(lambda c2: c2, uhello)))
산출:
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
내장 목록 기능 호출 :
print(list(uhello))
산출:
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
for 루프 사용하기 :
for c in uhello:
print(c)
산출:
H
e
l
l
o
W
o
r
l
d
답변
이 작업을 수행하는 또 다른 두 가지 방법을 탐색했습니다. 누군가에게 도움이 될 수 있습니다.
첫 번째는 쉽다 :
In [25]: a = []
In [26]: s = 'foobar'
In [27]: a += s
In [28]: a
Out[28]: ['f', 'o', 'o', 'b', 'a', 'r']
두 번째는 사용 map
과 lambda
기능입니다. 보다 복잡한 작업에 적합 할 수 있습니다.
In [36]: s = 'foobar12'
In [37]: a = map(lambda c: c, s)
In [38]: a
Out[38]: ['f', 'o', 'o', 'b', 'a', 'r', '1', '2']
예를 들어
# isdigit, isspace or another facilities such as regexp may be used
In [40]: a = map(lambda c: c if c.isalpha() else '', s)
In [41]: a
Out[41]: ['f', 'o', 'o', 'b', 'a', 'r', '', '']
더 많은 방법 은 파이썬 문서 를 참조하십시오
답변
이 작업은 문자열의 문자를 반복하여 목록으로 수집하는 것으로 요약됩니다. 가장 순진한 솔루션은 다음과 같습니다.
result = []
for character in string:
result.append(character)
물론, 그것은 단지 단축 될 수 있습니다
result = [character for character in string]
그러나 여전히 똑같은 일을하는 더 짧은 솔루션이 있습니다.
list
생성자는 iterable (반복자, 목록, 튜플, 문자열 등)을 목록 으로 변환하는 데 사용할 수 있습니다 .
>>> list('abc')
['a', 'b', 'c']
가장 큰 장점은 Python 2와 Python 3에서 모두 동일하게 작동한다는 것입니다.
또한 Python 3.5부터 (굉장한 PEP 448 덕분에 ) 빈 목록 리터럴로 압축을 풀면 모든 iterable에서 목록을 작성할 수 있습니다.
>>> [*'abc']
['a', 'b', 'c']
이것은 더 깔끔하며 어떤 경우에는 전화하는 것보다 더 효율적입니다 list
생성자를 직접 입니다.
Python 3에서는 목록을 반환 하지 않기map
때문에 기반 접근 방식 을 사용 map
하지 않는 것이 좋습니다 . Python 3에서 필터, 맵 및 축소 사용 방법을 참조하십시오 .
답변
나는 당신에게 문자 배열이 필요합니다 :
arr = list(str)
str을 특정 str로 나누려면 다음을 수행하십시오.
# str = "temp//temps" will will be ['temp', 'temps']
arr = str.split("//")
