[Python] for 반복문
- Python/기초
- 2020. 4. 3.
for 반복문의 특징으로 말하면 범위를 정하고 그 범위 내에서 하나씩 순회하는 방식입니다.
범위는 리스트, 문자열 등등으로 순회 가능한 객체면 됩니다. for는 while과 같이 반복을 시행하지만 범위를 정하고 반복을 시작하기 때문에 무한루프에 빠지지 않습니다.
for에 대해 천천히 알아보도록 합시다.
for 작성방법
for는 in을 사용해서 작성합니다. in 뒤에는 리스트, 문자열, 딕셔너리 같이 순회가 가능한 객체가 들어갑니다. 또는, range 함수가 들어갈 수도 있습니다.
리스트
a = [1,2,3,4,5]
for x in a:
print(x*2)
여기서 x 는 변수를 얘기합니다. 수학에서 방정식의 x와 같은 의미로 받아들이시면 될 것 같습니다.
x는 정해져있는 값이 아닌 데다가 x 말고 다른 걸 써도 됩니다. i를 써도 되고 index라 써도 되고 예약어와 숫자가 아니라면 다 쓸 수 있습니다.
for가 실행되는 과정을 살펴보겠습니다. x 가 a 의 원소가 한 번씩 됩니다. 순서는 인덱스가 증가하는 순서로 갑니다. 처음에는 x 가 1 이 됩니다. 그러면 1을 가지고 print(x*2) 이 시행됩니다. 두 번째 x는 a의 두 번째 인덱스 값인 2가 되고 2를 가지고 print(x*2)를 시행합니다. 이렇게 반복해서 a의 마지막 값까지 순회를 하면 for 문은 끝이 납니다.
이번엔 for 안에 조건을 넣어보겠습니다.
a = [10,11,12,13,14]
for num in a:
if num %2 ==0:
print(num/2)
else:
print(num)
조건문이 안에 들어간 상태에서도 반복문 무리없이 잘 됩니다. 조건에 맞춰서 하나씩 출력된 것을 볼 수 있습니다.
range
방금처럼 a 라는 리스트를 했지만 리스트가 단순 숫자라면 굳이 리스트를 따로 둘 필요 없이 range함수를 사용합니다.
for i in range(1,6):
print(i*2)
range(start, end, step) 세가지의 파라미터를 가집니다. start는 시작점, end는 끝점인데 해당점은 포함되지 않습니다. 즉, range(1,6)=[1,2,3,4,5]를 의미합니다. step은 몇 개씩 넘어갈 건지입니다. range(1,6,2)을 정의하면 1에서 5까지 2계단씩 뛰어서 나타나겠다는 의미입니다. 그러니, ragne(1,6,2)=[1,3,5]가 될 것입니다.
len() 함수를 range를 활용할 수도 있습니다.
len()을 쓰면 리스트의 길이나 문자열의 길이를 나타냅니다. 리스트 끝까지 다 순회를 하고 싶은데 리스트가 때때로 변해서 끝을 알지 못할 때 len() 함수로 끝을 정해줄 수 있습니다.
a = [1,2,3,4,5]
print(len(a))
for i in range(0,len(a)+1):
print(i ,'=>', i*2)
range의 end는 끝점을 포함시키지 않으므로 주의해서 써야합니다.
문자열
문자열도 하나하나가 인덱스가 있다고 문자열에 대한 포스팅에서 설명을 했습니다. 혹시 문자열에 대해 모르시면 아래 포스팅을 참고해주세요.
https://seong6496.tistory.com/28
문자열도 인덱스가 있으므로 순회가 가능합니다.
a ='hello'
for character in a:
print(character)
문자 하나하나가 출력되는 것을 볼 수 있습니다. 어렵지는 않지만 막상 활용을 못하는 경우가 허다합니다. 충분히 활용가치가 있으니 어디에 활용할지를 잘 생각을 해주시면 좋겠습니다.
딕셔너리
딕셔너리는 key : value로 이루어져 있어서 key만 순회, value 만 순회, key:value 순회가 가능합니다.
딕셔너리에 대해 잘 모르시면 딕셔너리 포스팅을 확인해주세요.
https://seong6496.tistory.com/30
for문에서 일반적으로 아무 변화를 주지 않으면 key값을 반환합니다.
a ={'korea':'seoul','japan':'tokyo', 'canada':'ottawa'}
for k in a:
print(k)
나라가 key값이고 수도가 value값으로 되어있는 a라는 딕셔너리에서 하나씩 뽑아서 출력하겠습니다.
그러면 key 값이 나오는 걸 알 수 있습니다. a의 value 값만 나오게 하고 싶다면 a [k]로 지정하면 되겠습니다.
a ={'korea':'seoul','japan':'tokyo', 'canada':'ottawa'}
for k in a:
print(a[k])
아예 value값만 따로 떼서 반복문을 돌릴 수도 있습니다.
a ={'korea':'seoul','japan':'tokyo', 'canada':'ottawa'}
for value in a.values():
print(value)
a.values() 함수로 values값만 빼놓고 반복문을 돌립니다. 똑같은 결과가 나옵니다.
item 함수를 이용하면 딕셔너리의 key:value값이 튜플로 반환됩니다. 이를 이용해서 for문에서 활용할 수 있습니다.
a ={'korea':'seoul','japan':'tokyo', 'canada':'ottawa'}
list(a.items())
for key, value in a.items():
print(key,value)
item 함수를 이용해 list를 만들었습니다. 그리고 for문에 key, value 한쌍이 순회를 하게 했습니다.
index 출력
for 문을 하다 보면 index를 옆에 두어야 하는 경우가 종종 생깁니다. 그럴 때 enumerate함수를 사용합니다.
a = [1,2,3,4,5]
for index,num in enumerate(a):
print(index, num)
옆에 인덱스를 붙이는 것을 볼 수 있습니다. 이 역시도 한쌍으로 움직이게끔 했습니다. 리스트는 원래 인덱스를 가지고 있으므로 가능합니다.
중첩
for도 if처럼 중첩이 가능합니다.
a = [1,2,3]
for i in a:
for j in a:
print(i*j)
순서를 잘 생각해야 하는 게 큰 문제입니다. 하나씩 살펴보면 먼저 i는 1부터 시작하고 그 1을 가지고 j는 1부터 대입하기 시작합니다. 그래서 맨 처음은 1*1이고 다음은 1*2 그다음은 1*3 이 됩니다. 그 후에 다시 i로 돌아가서 2를 시작하고 j는 1부터 다시 시작합니다. 2*1,2*2,2*3 이 됩니다. 이런 식으로 반복이 진행됩니다.
이상으로 for에 대해 간단히 알아보았습니다.
'Python > 기초' 카테고리의 다른 글
[Python] 전역변수, 지역변수 (0) | 2020.04.09 |
---|---|
[Python] 함수 (0) | 2020.04.07 |
[Python] while 반복문 쓰기 (0) | 2020.04.02 |
[Python] 조건문(if, elif, else) (0) | 2020.03.30 |
[Python] 딕셔너리(dictionary) (0) | 2020.03.28 |