단순히 list 내에 있는 element를 출력하고자 할 때, 기존에 배웠던 내용으로는 효율적으로 코드를 작성하기 어렵다
아래 예시와 같이 가능은 하지만.. 만약 2억개의 element를 출력하려면 매우 힘든 작업이 될 것이다
squad = ['Leno', 'Tierny', 'Partey', 'Saka', 'Rowe', 'Pepe']
print(squad[0])
print(squad[1])
print(squad[2])
print(squad[3])
print(squad[4])
print(squad[5])
# Output: Leno
# Output: Tierny
# Output: Partey
# Output: Saka
# Output: Rowe
# Output: Pepe
for
for 루프를 통해 특정 객체의 원소에 하나씩 차례로 접근할 수 있다
for <temporary variable> in <collection>:
<action>
1) for
→ for loop 실행을 위한 문구
2) <temporary variable>
→ 현재 for loop가 실행중인 객체에 설정하는 임시 변수
3) in
→ <temporary variable>
과 <collection>
분리 목적
4) <collection>
→ loop over을 위한 리스트, 튜플, 문자열 등
5) <action>
→ loop의 원소들에 취하는 행위
squad = ['Leno', 'Tierny', 'Partey', 'Saka', 'Rowe', 'Pepe']
for arsenal_player in squad:
print(arsenal_player)
# Output: Leno
# Output: Tierny
# Output: Partey
# Output: Saka
# Output: Rowe
# Output: Pepe
for
과 range()
를 이용하여 정수 범위를 표현하고, 범위의 갯수만큼 출력 가능
<temporary variable>
자체를 출력할 수도 있고,
<temporary variable>
를 임시변수로 두고 미리 설정해둔 변수를 이용할 수도 있다.
for n in range(3):
print(n)
# Output: 0
# Output: 1
# Output: 2
# 임시변수 n을 정수범위 0~2까지 설정
for back_number in range(5):
print("Today, Number " + str(back_number + 1) + " will play.")
# Output: Today, Number 1 will play.
# Output: Today, Number 2 will play.
# Output: Today, Number 3 will play.
# Output: Today, Number 4 will play.
# Output: Today, Number 5 will play.
# 임시변수 back_number을 정수범위 0~4까지 설정
comment = "Play hard!"
for temp in range(3):
print(comment)
# Output: Play hard!
# Output: Play hard!
# Output: Play hard!
while
특정 조건 하에 만족하는 동안만 실행하고자 하는 경우에 사용
while <conditional statement>:
<action>
1) while
→ while loop 실행을 위한 문구
2) <conditional statement>
→ 사용하고자 하는 조건
3) <action>
→ loop의 원소들에 취하는 행위
아래 예시를 보면,
number = 0
while number <= 3:
print('You can play today, number ' + str(number + 1) + '.')
number += 1
print('Sorry we are full now')
# Output: You can play today, number 1.
# Output: You can play today, number 2.
# Output: You can play today, number 3.
# Output: You can play today, number 4.
# Output: Sorry we are full now
1) 0에서 시작
2) number
이 3 이하면 조건 실행 (첫번째 문구 출력)
3) number += 1
(이후 number
이 1씩 증가후 while
문 재실행)
4) while
문 실행이 종료되면 두번째 문구 출력
끝나지 않고 실행되는 루프를 Infinite Loops(무한 루프)라고 한다.
squad = ['Leno', 'Tierny', 'Partey', 'Saka']
number = 0
while number < len(squad):
print(squad[number])
print('Cut Line')
# Output: Leno
# Output: Leno
# Output: Leno
# ...
# number += 1 등의 조건이 생략되어 while문의 조건이 항상 충족되는 상태 → 무한 루프
break
파이썬의 반복문(for
문 또는 while
문)에서 빠져나오고자할 때 사용하는 키워드 (무한루프 방지용)
squad = ['Leno', 'Tierny', 'Partey', 'Saka', 'Rowe', 'Pepe']
print('Let me find the player you are looking for')
for player in squad:
if player == 'Saka':
print('He\'s in the training camp now!')
break
# Output: Let me find the player you are looking for
# Output: He's in the training camp now!
# break 존재 → 실행 O, Saka 발견 이후 실행 중지
# break 삭제 → 실행 O, Saka 발견 이후 뒤에 있는 Rowe, Pepe까지 탐색
while 1:
print('Get ya!')
break
# Output: Get ya!
# 1은 참값으로 간주되므로, break가 없다면 Get ya!가 무한히 출력되는 무한 루프가 시동
# 허나 break가 있으므로, 한번의 시행만으로 만족
continue
다음 loop로 넘어가고자할 때 사용
# continue가 있을 때
number_list = [1, -5, 8, -2, 11, -25]
for number in number_list:
if number < 0:
print(number)
continue
print('plus')
# Output: plus
# Output: -5
# Output: plus
# Output: -2
# Output: plus
# Output: -25
# 변수 number이 음수일때 변수를 출력하고, continue가 있기에 다음 loop로 넘어감
# 여기선 다음 loop가 없으므로, number이 음수일때에는 'plus' 출력을 안함
# continue가 없을 때
number_list = [1, -5, 8, -2, 11, -25]
for number in number_list:
if number < 0:
print(number)
print('plus')
# Output: plus
# Output: -5
# Output: plus
# Output: plus
# Output: -2
# Output: plus
# Output: plus
# Output: -25
# Output: plus
# 변수 number가 음수일때 변수를 출력하고, continue가 없기에 바로 'plus' 출력
루프끼리는 중첩이 가능
squad = [['Leno', 'Tierny', 'Partey'], ['Saka', 'Rowe'], ['Pepe']]
for session in squad:
print(session)
for session in squad:
for player in session:
print(player)
# Output: ['Leno', 'Tierny', 'Partey']
# Output: ['Saka', 'Rowe']
# Output: ['Pepe']
# Output: Leno
# Output: Tierny
# Output: Partey
# Output: Saka
# Output: Rowe
# Output: Pepe
# squad 변수를 중첩을 통하여 두번의 loop로 표현
sales_data = [[12, 17, 22], [2, 10, 3], [5, 12, 13]]
scoops_sold = 0
for location in sales_data:
print(location)
for element in location:
scoops_sold += element
print(scoops_sold)
# Output: [12, 17, 22]
# Output: [2, 10, 3]
# Output: [5, 12, 13]
# Output: 96
loop의 for
문을 간단하게 한 문장으로 표현할 수 있다
new_list = [<expression> for <element> in <collection>]
back_number = range(5)
practice_game_back_number = [number + 10 for number in back_number]
print(practice_game_back_number)
# Output: [10, 11, 12, 13, 14]
# back_number에 10을 더하여 새로운 list인 practice_game_back_number 생성
loop의 for
문에 조건을 부여할 때에도 간단하게 표현 가능
new_list = [<expression> for <element> in <collection> if <condition>]
number_list = [-1, 2, -4, 8]
make_negative_positive = [number * -1 for number in number_list if number < 0]
print(make_negative_positive)
# Output: [1, 4]
# number_list 내 element를 number로 지정 후, number < 0의 조건 부여
break
와 continue
의 차이공부하며 헷갈렸던 부분인데, 아래와 같이 정리할 수 있을 듯 하다.
break
→ break
문을 만나게 되면 거기서 종료 후 빠져나옴continue
→ continue
문을 만나게 되면 다음 loop로 진행for
문 요약제일 아래 두개의 요약본은 반드시 외워둬야할 것 같다.
이러한 요약 코드들을 읽을 줄 알아야 나중에 도움이 되지 않을까?