for in 반복문
- Python에서의 반복문은
for in
문과 while
문 지원
- 반복가능한 객체(iterable 객체)의 element를 반복문을 통해 리턴
- iterable 객체는 list, dictionary, set, string, tuple, range, 등등
for in syntax
for item in iterable:
... 반복할 구문 ...
iterable 객체 조건
- collections, iterable에 속한 instance
- isinstance 함수를 통해 첫번째 파라미터가 두번째 파라미터 클래스의 instance이면 True => iterable한 객체(instance)
>>> import collections
>>> var_list = [1, 3, 5, 7]
>>> isinstance(var_list, collections.Iterable)
True
>>> var_dict = {"a": 1, "b":1}
>>> isinstance(var_dict, collections.Iterable)
True
>>> var_set = {1, 3}
>>> isinstance(var_set, collections.Iterable)
True
>>> var_str = "abc"
>>> isinstance(var_str, collections.Iterable)
True
>>> var_bytes = b'abcdef'
>>> isinstance(var_bytes, collections.Iterable)
True
>>> var_tuple = (1, 3, 5, 7)
>>> isinstance(var_tuple, collections.Iterable)
True
>>> var_range = range(0,5)
>>> isinstance(var_range, collections.Iterable)
True
>>> var_int = 932
>>> isinstance(var_int, collections.Iterable)
False
>>> var_float = 10.2
>>> isinstance(var_float, collections.Iterable)
False
>>> var_none = None
>>> isinstance(var_none, collections.Iterable)
False
for in example
>>> for i in var_list:
... print(i)
...
1
3
5
7
>>> for key in var_dict:
... print(key)
...
a
b
>>> for val in var_dict.values():
... print(val)
...
10
20
>>> for key, val in var_dict.items():
>>> print(key, val)
>>>
a 10
b 20
>>> for i in var_set:
... print(i)
...
1
3
>>> for i in var_str:
... print(i)
...
a
b
c
>>> for i in var_bytes:
... print(i)
...
97
98
99
100
101
102
>>> for i in var_tuple:
... print(i)
...
1
3
5
7
>>> for i in var_range:
... print(i)
...
0
1
2
3
4
- dictionary의 for문을 실행할 경우 key값만 출력
- dictionary의 key와 value를 출력하기 위해서는 별도 메소드가 필요
- value를 리턴받고 싶을 때, .values()
메소드 사용
- key와 value를 동시에 리턴받고 싶을 때,
.items()
메소드 사용
range
- 말그대로 범위로 for문의 대상 범위
range(시작숫자, 종료숫자, step)
의 syntax로 리스트의 슬라이싱과 유사
시작숫자
와 step
은 생략 가능
range example
>>> range(5)
range(0, 5)
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>> range(5,10)
range(5, 10)
>>> list(range(5,10))
[5, 6, 7, 8, 9]
>>> tuple(range(5,10))
(5, 6, 7, 8, 9)
>>> list(range(10,20,2))
[10, 12, 14, 16, 18]
>>> list(range(10,20,3))
[10, 13, 16, 19]
enumerate
- for문 사용 시 몇 번째 반복문인지 확인 시 사용
- 즉, 인덱스 번화와 element를 tuple형태로 반환
enumerate example
>>> t = [1, 5, 7, 33, 39, 52]
>>> for p in enumerate(t):
... print(p)
...
(0, 1)
(1, 5)
(2, 7)
(3, 33)
(4, 39)
(5, 52)
>>> for i, v in enumerate(t):
... print("index : {}, value: {}".format(i,v))
...
index : 0, value: 1
index : 1, value: 5
index : 2, value: 7
index : 3, value: 33
index : 4, value: 39
index : 5, value: 52