[Python] 반복문, for문

is Yoon·2023년 8월 16일
0

Python

목록 보기
7/17

파이썬의 for문은 시퀀스 자료형의 항목들을 순서대로 이터레이션 한다. (순서별로 요소를 하나씩 꺼낸다.)

  • 반복되는 부분에 활용
  • 혹은 iterable(객체)을 루핑할 때 활용
  • 반복 횟수가 정해져 있을 때

iterable ?
'반복 가능한'이란 사전적 의미를 갖으며, 파이썬에서는 '여러 개의 요소들로 구성되어 있으면서 요소를 한 번에 하나씩 돌려줄 수 있는 객체'를 의미한다.

객체 ?
메모리에 할당되어 존재하고 있는 데이터




for문 구조

for 요소를 담을 변수 in 반복 가능한 객체 :
	반복할 코드



반복 범위 지정

range() 함수를 이용하거나 시퀀스 객체(list, tuple, set, dict)를 이용하여 for문의 반복 범위를 지정할 수 있다.

1) range() 함수 이용

  • range(시작, 끝-1, 증감크기)
for x in range() : 
	반복할 코드

2) 시퀀스 객체 이용

list 이용 시..
각 인자가 차례대로 x에 대입되어 len(list) 횟수만큼 실행된다.

for x in [list] :
	반복할 코드
# x에 [list] 각 인자 대입하여 len([list]) 만큼 실행됨
# [1, 2, 3] 이라면 x는 차례대로 1, 2, 3

2차원 list 이용 시..
각각 인자가 x, y에 대입되어 len([list]) 횟수만큼 실행된다.

for x, y in [[4,3]] :
# x = 4, y = 3이 된다.

str 이용 시..
문자열 한 글자씩 x에 대입되어 len(str) 횟수만큼 실행된다.
💡 출력 시에 Enter를 없애고 싶다면, end=" "를 추가하면 된다.

for x in "일이삼" :
	print(x, end=" ")
-----------------------
일 이 삼

3) 인덱스, 원소 동시 접근

  • enumerate - 리스트가 있는 경우 순서와 리스트의 값을 전달하는 기능
names = ['철수', '영희', '영수']
for i, name in enumerate(names):
    print('{}번: {}'.format(i + 1, name))
1번 : 철수
2번 : 영희
3번 : 영수
이차원_리스트 = [[0, 1], [3, 4]]

for i, (x, y) in enumerate(이차원_리스트) :
	print(i, x, y)
# 각각 i, x, y
# 0 0 1
# 1 3 4

for i, xy in enumerate(이차원_리스트) :
	print(i, xy)
# 인덱스 i, 원소 [x, y] 별로 구분
# 0 [0, 1]
# 1 [3, 4]



for else 문

for 반복문 : 
	if 조건문
    	내용1
    	break
else :
	내용2
# 조건문에 해당되면 내용1 출력, 내용2 출력 x

for x in [1, 2, 3, 4]:
    if x % 3:
        print(x)  # x가 3의 배수가 아니면 출력
    else:
        break  # x가 3의 배수이면 반복문에서 빠져나감
else:
    print("리스트의 원소를 모두 출력했어요")
    
1
2



중첩 for문

for 요소를 담을 변수 in 반복 가능한 객체 :
	for 반복 변수 in 반복 범위 : 
		반복할 코드



여러 개의 리스트 다루기

list_1 = ['a', 'b', 'c']
list_2 = [10, 20, 30]
for x in range(len(list_1)) :
	print(list_1[x], list_2[x])
a 10
b 20
c 30

zip() 함수

이중 for문을 작성하지 않고도 한 번에 여러 개의 for문을 작성한 효과

list = [x[y[0]:y[-1]] for x,y in zip(a, b)]
# x = a, y = b

인자를 여러 개 받을 수도 있다.
더 짧은 범위를 반복한다.

for a, b in zip(mystr, mystr[1:])
profile
planning design development with data

0개의 댓글