[python] 파이썬을 사용하여 문자열의 각 문자를 반복

C ++에서는 다음 std::string과 같이 반복 할 수 있습니다 .

std::string str = "Hello World!";

for (int i = 0; i < str.length(); ++i)
{
    std::cout << str[i] << std::endl;
}

파이썬에서 문자열을 어떻게 반복합니까?



답변

요하네스가 지적했듯이

for c in "string":
    #do something with c

for loop구문을 사용하여 파이썬에서 거의 모든 것을 반복 할 수 있습니다 .

예를 들어, open("file.txt")파일 객체를 반환하고 파일을 열고 해당 파일의 행을 반복하여 반복합니다.

with open(filename) as f:
    for line in f:
        # do something with line

그것이 마술처럼 보인다면, 그것은 다소 있지만, 그 배후의 아이디어는 정말 간단합니다.

for루프가 작동 하도록 모든 종류의 객체에 적용 할 수있는 간단한 반복자 프로토콜이 있습니다 .

next()메소드 를 정의하는 반복자를 구현 __iter__하고 클래스에서 메소드를 구현하여 반복 가능하게하십시오. ( __iter__물론 반복자 객체, 즉을 정의하는 객체를 반환해야 함 next())

공식 문서를 참조하십시오


답변

문자열을 반복 할 때 색인에 액세스해야하는 경우 다음을 사용하십시오 enumerate().

>>> for i, c in enumerate('test'):
...     print i, c
... 
0 t
1 e
2 s
3 t


답변

더 쉬운 방법 :

for c in "test":
    print c


답변

좀 더 포괄적 인 대답을하기 위해, 사각 페그를 둥근 구멍에 강제로 밀어 넣고 싶다면 문자열을 반복하는 C 방식을 파이썬에 적용 할 수 있습니다.

i = 0
while i < len(str):
    print str[i]
    i += 1

그러나 다시 말하지만 문자열이 본질적으로 반복 가능한 경우 왜 그렇게됩니까?

for i in str:
    print i


답변

글쎄 당신은 또한 이와 같은 흥미로운 일을 할 수 있고 for 루프를 사용하여 일을 할 수 있습니다

#suppose you have variable name
name = "Mr.Suryaa"
for index in range ( len ( name ) ):
    print ( name[index] ) #just like c and c++ 

대답은

씨 . 수리아

그러나 range ()는 시퀀스 값 목록을 생성하므로 직접 이름을 사용할 수 있습니다

for e in name:
    print(e)

이것은 동일한 결과를 생성하고 더 좋아 보이고 목록, 튜플 및 사전과 같은 모든 시퀀스에서 작동합니다.

우리는 내장 함수 (Python Community의 BIF)를 견인했습니다.

1) range ()-range () BIF는 인덱스를 만드는 데 사용됩니다. 예

for i in range ( 5 ) :
can produce 0 , 1 , 2 , 3 , 4

2) len ()-len () BIF는 주어진 문자열의 길이를 찾는 데 사용됩니다


답변

문자열을 반복하는 데 더 기능적인 접근 방식을 사용하려면 (어쩌면 어떻게 든 변환) 문자열을 문자로 분할하고 각 함수에 함수를 적용한 다음 결과 문자 목록을 다시 문자열로 결합 할 수 있습니다.

문자열은 본질적으로 문자 목록이므로 ‘map’은 문자열을 두 번째 인수로-함수-첫 번째 인수-각 문자열에 적용하여 문자열을 반복합니다.

예를 들어, 여기서는 간단한 람다 접근 방식을 사용합니다. 왜냐하면 내가 원하는 것은 문자를 간단하게 수정하는 것입니다. 여기에서 각 문자 값을 증가시킵니다.

>>> ''.join(map(lambda x: chr(ord(x)+1), "HAL"))
'IBM'

또는 더 일반적으로 :

>>> ''.join(map(my_function, my_string))

여기서 my_function은 char 값을 가져 와서 char 값을 반환합니다.


답변

여기에 몇 가지 대답이 사용 range됩니다. xrange일반적으로 완전히 인스턴스화 된 목록보다는 생성기를 반환하므로 더 좋습니다. 다양한 길이의 메모리 및 / 또는 반복 가능한 문제 xrange가 문제가 될 수있는 경우 에 우수합니다.