[Python] for in 반복문, range, enumerate

황인용·2020년 7월 27일
0

Python

목록 보기
42/44

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

# 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

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)
# step 활용
>>> 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)
# index value 형태 리턴 예제
>>> 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
profile
dev_pang의 pang.log

0개의 댓글