Data/Python

[Python] 파이썬 제어문 - for 반복문, continue, List comprehension

재은초 2023. 6. 17. 21:08
반응형

For문이란?

  • while문과 for문은 둘 다 반복한다는 점에서 같으나, for문은 주어진 데이터 리스트 안에서 변수를 뽑아내 반복한다.
# for문 기본 구조
for 변수 in 리스트(또는 튜플, 문자열):
    수행할 문장1
    수행할 문장2
    ...
# while문 기본 구조 
while <조건문>:
      <수행할 문장1>
      <수행할 문장2>
      <수행할 문장3>
      ...

 

리스트를 사용한 전형적인 for문

>>> test_list = ['one', 'two', 'three'] 
>>> for i in test_list:                   # list의 요소가 i 변수에 먼저 대입된 후
>>>     print(i)                          # print문 수행
one                                       # 계속 반복
two 
three

 

튜플을 사용한 전형적인 for문

>>> a = [(1,2), (3,4), (5,6)]           # 리스트의 요소값이 튜플이기 때문에 
>>> for first, last in a:               # 각 요소가 (first, last)에 대입
>>>     print(first + last)
3
7
11

>>> a = [(1,2), (3,4), (5,6)]           
>>> for first in a:                      # 튜플 자체로 가져옴
>>>     print(first)
(1, 2)
(3, 4)
(5, 6)

 

continue: 제어문 맨 처음으로 돌아가기

>>> marks = [90, 25, 67, 45, 80]
>>> number = 0

>>> for mark in marks: 
>>>    number = number +1 
>>>    if mark < 60:                    # 60점 이하일 경우에는 참
>>>        continue                     # continue로 아무것도 수행하지 않음
>>>    print("%d번 학생 축하합니다. 합격입니다. " % number)
1번 학생 축하합니다. 합격입니다.
3번 학생 축하합니다. 합격입니다.
5번 학생 축하합니다. 합격입니다.

 

For문과 range 함수

  • range함수는 숫자 리스트를 자동으로 만들어 주는 함수다.
>>> a = range(10)        # range(10)은 0부터 10미만 숫자 range 객체 생성
>>> a
range(0, 10)

# 시작과 끝 숫자 지정
>>> a = range(1, 11)     # range(시작 숫자, 끝 숫자) 형태
>>> a                    # 하지만 끝 숫자는 포함되지 않는다
range(1, 11)
>>> marks = [90, 25, 67, 45, 80]

>>> for number in range(len(marks)):    # len 함수는 리스트 내 요소의 개수 반환
>>>    if marks[number] < 60:           # len(marks)는 5
>>>        continue                     # number에 0-4 대입
>>>    print("%d번 학생 축하합니다. 합격입니다." % (number+1))

 

다중 for문으로 구구단 만들기

>>> for i in range(2,10):             # 첫번째 for문이 2일때
>>>     for j in range(1, 10):        # 두번째 for문 1~9까지 전체 수행
>>>         print(i,"*",j,"="i*j)     
>>>     if j == 9:
>>>         print('\n')                     
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
...
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81

 

리스트 안에 For문 포함(List comprehension)

  • 리스트 안에 for문을 포함하는 리스트 내포(List comprehension)를 사용하면 좀 더 편리하고 직관적인 프로그램을 만들 수 있다.
# 리스트 내포 일반 문법 - if 조건문 생략 가능
[표현식 for 항목 in 반복가능객체 if 조건문]

# 리스트 내포 일반 문법 - 2개 이상의 for문 사용
[표현식 for 항목1 in 반복가능객체1 if 조건문1
        for 항목2 in 반복가능객체2 if 조건문2
        ...
        for 항목n in 반복가능객체n if 조건문n]
# 일반 for문
>>> a = [1,2,3,4]                # 리스트 a
>>> result = []                  # 빈 리스트 result - 나중에 결과값 넣을 변수 지정
>>> for num in a:                # 리스트 a에서 뽑아서 num 변수에 배정
>>>     result.append(num*3)     # .append(x)는 리스트의 맨 마지막에 x추가
>>> print(result)
[3, 6, 9, 12]

# 위의 코딩을 리스트 내포화
>>> a = [1,2,3,4]
>>> result = [num * 3 for num in a]  # 리스트 result 안에 for문 자체 내포
>>> print(result)                    # 리스트 a 에서 뽑아서 num 변수 지정
[3, 6, 9, 12]                        # 이후 표현식 num * 3 실행

# 위의 코딩을 리스트 내포화 응용 - if문 추가
>>> a = [1,2,3,4]
>>> result = [num * 3 for num in a if num % 2 == 0]
>>> print(result)                    # if num 변수가 짝수일때, num * 3 실행
[6, 12]

# 리스트 내포화 응용 - 모든 결과를 리스트에 담고 싶을 때
>>> result = [x*y for x in range(2,10)
>>>               for y in range(1,10)]
>>> print(result)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16,
20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42
, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72,
9, 18, 27, 36, 45, 54, 63, 72, 81]

 

 

Reference

 




반응형