파이썬의 for문은 다른 언어들의 for문과 조금 다른데
다른 언어(C, Pascal, . . .)의 for문은 while문을 보기쉽게 요약했다고 생각할 수 있는데
파이썬의 for문은 시퀀스 데이터를 객체로 받아 반복에 활용해서 반복조건이 기존과는 다르다.
시퀀스 데이터의 원소 개수만큼 반복한다.
여기서 시퀀스(sequence)는 나열이라는 뜻이며 문자열, 리스트, 튜플이 속한다. (순서가 있다)
for문은 주어진 시퀀스 데이터의 원소를 통해 반복하고 아래는 for문의 사용 형식이다.
for는 키워드
target_list는 매개변수(매개체)
in은 멤버쉽 연산자
expression_list에는 시퀀스 데이터
suite에는 실행문장이 들어간다
아래의 예제를 통해 알아보겠다.
for문은 원소 개수만큼 반복하니 여기선 총 3번 반복된 것 실행결과를 통해 알 수 있다.
아래의 사진으로 보다 쉽게 설명해 보겠다.
그리고 4번 줄을 통해서 알 수 있는건 변수 x의 값은 주어진 시퀀스 객체의 값으로 채워지고
실행이 반복될 때마다 x의 값은 다음 원소값으로 바뀐다는 것이다.
프로그램의 진행은 순차적으로 my_list를 순회하다가 원소값이 없을 때 for문을 빠져나온다.
그리고 만약 x가 my_list의 원소를 가르킨다면 혹시 여기서는 x와 원소가 같지 않을까라는 생각에
5번 줄로 my_list의 원소 값을 0으로 바꿔볼려고 했다.
그러나 6번 줄의실행 결과를 보면 my_list의 원소값은 변하지 않았다.
예제를 통해 알 수 있는건 변수 x는 for문을 통해 my_list 원소의 값을 순차적으로 복사한다는 것이다.
아래의 예제를 통해 한번 더 확인하겠다.
추가적으로 파이썬에서 for문을 사용할 때 range 함수를 빼놓을 수가 없다.
range 함수에 대해 알아보자면 range 함수는 숫자로 이루어진 시퀀스을 만들어주는 함수이다.
range(start, stop, step)의 사용형식을 가지고 있는데
start 생략시 0, step 생략시 1이 자동으로 넣어지고 이때 주의할 점이 끝숫자는 포함하지 않는다.
아래의 예제를 통해 알아보겠다.
여기서 주의할 점이 range는 tuple을 반환하는 것이 아니라 반환하는 값의 자료형이 range이다. 그래서 모든 원소를 보려면 list()를 사용해야 한다.
그럼 이제 for문에서의 range 함수 사용법을 알아보겠다.
이처럼 for문은 시퀀스 데이터를 객체로 받아 사용하는데 range 함수가
for문의 i번 반복용 객체를 만들어주니 매우 편하다.
여담으로 enumerate함수도 for문에서 사용할 수 있다. 아래의 예제를 통해 range함수와 enumerate 함수를 비교하겠다.
상황에 따라 enumerate함수를 사용하면 range함수를 사용했을때 보다 코드를 간결하게 만들 수 있다.
그 이유는 emerate함수는 원소의 인덱스와 값을 함께 반환하기 때문이다.
아래의 예제를 통해 확인해보자.
range함수를 통해 원소의 인덱스와 값을 반환하게 하려면 여러가지 메소드의 중첩이 필요하다.
상황에 따라 range함수와 enumerate함수를 유동적으로 사용하면 되겠다.
그리고 for문과 range함수를 활용한 예제를 만들어 보았다.
코드가 어떻게 실행되고 왜 이런 결과가 나오는지 한번 생각해보면 좋을거 같다.
마지막의 for~else는 저번 시간에 알아봤던 while~else와 동일하게 생각해도 좋다.
아래는 참고하면 좋은 사진이다. 전 포스팅 반복문(while)을 캡쳐했다.
'Python > Python 기초' 카테고리의 다른 글
[Python] 함수 2 (디폴트 매개변수) (0) | 2022.03.09 |
---|---|
[Python] 함수(함수기본, 매개변수, 리턴값) (0) | 2022.03.08 |
[Python] 반복문(while) (0) | 2022.03.02 |
[Python] 조건문(if, else, elif) (0) | 2022.03.01 |
[Python] 연산자 2 (논리, 비트, 멤버쉽, 식별) (0) | 2022.03.01 |