여타 다른 언어에서는 일반적인 for문, foreach문, for of문등 여러가지 방식을 한꺼번에 지원하는 경우가 많습니다.
Python에서는 for in문 한가지 방식의 for 문만 제공합니다.
REPL 에서 확인해보겠습니다.
for in 문 형식 입니다.
iterable은 사전적의미와 똑같이 반복가능한 객체를 말합니다.
# 예시
for item in iterable:
... 반복할 구문...
>>> import collections
# iterable 한 타입
>>> 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
# iterable하지 않은 타입
>>> 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
앞서 다룬 타입 중 list, dictionary, set, string, tuple, bytes가 iterable한 타입입니다.
range도 iterable 합니다. 이번 포스트 아래쪽에서 다루겠습니다.
for문을 동작시켜봅니다.
>>> for i in var_list:
... print(i)
...
1
3
5
7
>>> for i in var_dict:
... print(i)
...
a
b
>>> 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
>>> 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]
>>> s = [1, 3, 5]
>>> for i in range(len(s)):
... print(s[i])
...
1
3
5
>>> for v in s:
... print(v)
...
1
3
5
>>> 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