Python/개념 및 정리

파이썬 for문

코딩하는 친구 2023. 4. 24. 20:08

반복문 for문


for 문의 기본 구조

리스트 = [1, 2, 3]
for 변수 in 리스트 (또는 튜플, 문자열):
	print(변수)
1
2
3

리스트나 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 안에 있는 요소를 하나씩 반복한다.

다른 언어의 for each 문과 비슷하다!!!

1. 전형적인 for문

test_list = ['one', 'two', 'three']
for i in test_list:
	print(i)
one
two
three

test_list 리스트의 첫 번째 요소인 'one'이 먼저 i 변수에 대입된 후 print(i) 문장을 수행한다.

다음에 두 번째 요소 'two'가 i변수에 대입된 후 print(i)문장을 수행하고 리스트의 마지막 요소까지 이것을 반복한다.

2. 다양한 for문의 사용

a = [(1, 2), (3, 4), (5, 6)]
for (first, last) in a:
	print(first, end=' ')
    	print(last)
1 2
3 4
5 6

위 예는 a 리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 (first, last) 변수에 대입된다.

3. for 문과 함께 자주 사용하는 range함수

for  문은 숫자 리스트를 자동으로 만들어 주는 range 함수와 함께 사용하는 경우가 많다. 다음은 range 함수의 간단한 사용법이다.

a = range(10)
a
range(0, 10)

range(10)은 0부터 10미만의 숫자를 포함하는 range 객체를 만들어 준다.

 

시작 숫자와 끝 숫자를 지정하려면 range(시작 숫자, 끝 숫자) 형태를 사용하는데, 이때 끝 숫자는 포함되지 않는다.

for 문과 range 함수를 사용하여 1부터 10까지 더하는 식

add = 0
for i in range(1, 11):
	add += i
print(add)
55

range(1, 11)은 숫자 1부터 10까지 (1이상 11미만)의 숫자를 데이터로 갖는 객체이다. 따라서 위 예에서 i 변수에 숫자가 1부터 10까지 하나씩 차례로 대입되면서 add += i 문장을 반복적으로 수행하고 add는 최종적으로 55가 된다.

1이 아니라 다른 숫자만큼 증가하고 싶다면 range(start, stop, step)와 같이 3개의 인수를 지정한다.

for i in range(10, 0, -3):
	print(i)
10
7
4
1

4. for 문과 관련된 함수 continue, break

for i in range(3):
	if i == 1:
    continue #continue 다음 실행문은 실행되지 않는다.
    print(i)
    0
    2
    for i in range(10):
    	if i == 3:
        break #break: for 문을 종료함
        print(i)
    0
    1
    2

5. 리스트 컴프리헨션(List Comprehension) 사용하기

[표현식 for 항목 in 반복가능객체 if 조건문]

리스트 안에 for 문을 포함하는 리스트 컴프리헨션을 사용하면 좀 더 편리하고 직관적인 프로그램을 만들 수 있다.

a = [1, 2, 3, 4]
result = []
for num in a:
	result.append(num * 3)
print(result)
[3, 6, 9, 12)

위 예제는 a리스트의 각 항목에 3을 곱한 결과를 result 리스트에 담는 예제이다.

이것을 리스트 컨프리헨션을 사용하면 다음과 같이 간단히 해결할 수 있다.

a = [1, 2, 3, 4]
result = [num * 3 for num in a]
print(result)
[3, 6, 9, 12]

만약 [1, 2, 3, 4]중에서 짝수에만 3을 곱하여 담고 싶다면 다음과 같이 리스트 컨프리헨션 안에 "if 조건"을 사용할 수 있다.

a = [1, 2, 3, 4]
result = [num * 3 for num in a if num % 2 == 0]
print(result)
[6, 12]