Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- paper
- Laplacian
- pandas
- reinforcement learning
- optimization
- ML-Agent
- David Silver
- statistics
- 강화학습
- 판다스
- 김성훈 교수님
- 리스트
- Jacobian Matrix
- neural network
- Linear algebra
- 데이터 분석
- 모두를 위한 RL
- machine learning
- unity
- Hessian Matrix
- convex optimization
- Deep Learning
- Python Programming
- 딥러닝
- 유니티
- rl
- 논문
- 사이킷런
- Series
- list
Archives
RL Researcher
05. for in 반복문, Range, enumerate 본문
1. for in 반복문
-
Python에서는 for in문 한가지 방식의 for 문만 제공합니다.
-
iterable은 사전적의미와 똑같이 반복가능한 객체를 말합니다.
for item in iterable:
... 반복할 구문...
-
iterable 객체를 판별하기 위해서는 아래의 방법이 있습니다.
-
collections.Iterable에 속한 instance인지 확인하면 됩니다.
-
isinstance 함수는 첫번째 파라미터가 두번째 파라미터 클래스의 instance이면 True를 반환합니다.
import collections
# iterable 한 타입
var_list = [1, 3, 5, 7]
print(isinstance(var_list, collections.Iterable))
========================================================================
<output>
True
var_dict = {"a": 1, "b":1}
print(isinstance(var_dict, collections.Iterable))
========================================================================
<output>
True
var_set = {1, 3}
print(isinstance(var_set, collections.Iterable))
========================================================================
<output>
True
var_str = "abc"
print(isinstance(var_str, collections.Iterable))
========================================================================
<output>
True
var_bytes = b'abcdef'
print(isinstance(var_bytes, collections.Iterable))
========================================================================
<output>
True
var_tuple = (1, 3, 5, 7)
print(isinstance(var_tuple, collections.Iterable))
========================================================================
<output>
True
var_range = range(0,5)
print(isinstance(var_range, collections.Iterable))
========================================================================
<output>
True
# iterable하지 않은 타입
var_int = 932
print(isinstance(var_int, collections.Iterable))
========================================================================
<output>
False
var_float = 10.2
print(isinstance(var_float, collections.Iterable))
========================================================================
<output>
False
var_none = None
print(isinstance(var_none, collections.Iterable))
========================================================================
<output>
False
-
앞서 다룬 타입 중 list, dictionary, set, string, tuple, bytes가 iterable한 타입입니다. range도 iterable 합니다.
for i in var_list:
print(i)
========================================================================
<output>
1
3
5
7
for i in var_dict:
print(i)
========================================================================
<output>
a
b
for i in var_set:
print(i)
========================================================================
<output>
1
3
for i in var_str:
print(i)
========================================================================
<output>
a
b
c
for i in var_bytes:
print(i)
========================================================================
<output>
97
98
99
100
101
102
for i in var_tuple:
print(i)
========================================================================
<output>
1
3
5
7
for i in var_range:
print(i)
========================================================================
<output>
0
1
2
3
4
-
dictionary의 for문을 보면 key값만 출력됩니다.
for i in var_dict:
print(i)
========================================================================
<output>
a
b
2. range
-
위쪽 for문의 range 결과 값이 0, 1, 2, 3, 4 순서대로 결과 값이 출력되었습니다.
-
range는 range(시작숫자, 종료숫자, step)의 형태로 리스트 슬라이싱과 유사합니다.
-
range의 결과는 시작숫자부터 종료숫자 바로 앞 숫자까지 컬렉션을 만듭니다.
-
시작숫자와 step은 생략가능합니다.
range(5)
range(0, 5)
for i in range(5):
print(i)
========================================================================
<output>
0
1
2
3
4
-
range는 값을 확인하기 위해서 다른 순서 있는 컬렉션으로 변환해야합니다.
print(range(5,10))
========================================================================
<output>
range(5, 10)
print(list(range(5,10)))
========================================================================
<output>
[5, 6, 7, 8, 9]
print(tuple(range(5,10)))
========================================================================
<output>
(5, 6, 7, 8, 9)
-
step을 사용해봅니다.
print(list(range(10,20,2)))
========================================================================
<output>
[10, 12, 14, 16, 18]
print(list(range(10,20,3)))
========================================================================
<output>
[10, 13, 16, 19]
-
파이썬에서 권장하지 않는 패턴입니다.
s = [1, 3, 5]
for i in range(len(s)):
print(s[i])
========================================================================
<output>
1
3
5
-
파이썬에서 권장하는 패턴
for v in s:
print(v)
========================================================================
<output>
1
3
5
3. enumerate
-
반복문 사용 시 몇 번째 반복문인지 확인이 필요할 수 있습니다. 이때 사용합니다.
-
인덱스 번호와 컬렉션의 원소를 tuple형태로 반환합니다.
t = [1, 5, 7, 33, 39, 52]
for p in enumerate(t):
print(p)
========================================================================
<output>
(0, 1)
(1, 5)
(2, 7)
(3, 33)
(4, 39)
(5, 52)
-
tuple형태 반환을 이용하여 아래처럼 활용할 수 있습니다.
for i, v in enumerate(t):
print("index : {}, value: {}".format(i,v))
========================================================================
<output>
index : 0, value: 1
index : 1, value: 5
index : 2, value: 7
index : 3, value: 33
index : 4, value: 39
index : 5, value: 52
'AI Basic > Python Programming' 카테고리의 다른 글
14. Set(집합) (0) | 2021.01.03 |
---|---|
13. Dictionary(딕셔너리) (0) | 2021.01.03 |
12. 튜플(tuple) (0) | 2021.01.03 |
15. 함수(function) (0) | 2020.12.27 |
11. 리스트(List) - 5 - 리스트 정렬 (0) | 2020.12.25 |
Comments