Python for loops in different ways
Page content
강의 홍보
- 취준생을 위한 강의를 제작하였습니다.
- 본 블로그를 통해서 강의를 수강하신 분은 게시글 제목과 링크를 수강하여 인프런 메시지를 통해 보내주시기를 바랍니다.
스타벅스 아이스 아메리카노를 선물
로 보내드리겠습니다.
- [비전공자 대환영] 제로베이스도 쉽게 입문하는 파이썬 데이터 분석 - 캐글입문기
I. 개요
- 여러 형태의 반복문을 배우고 실습한다.
- 한줄로 작성하는 반복문을 배우고 실습한다.
II. For Loop Basic Syntax
- 파이썬의 기본 문법은 아래와 같다.
for <변수> in <iterable>:
<코드>
- 여기에서
iterable
의 개념은list
와tuple
을 의미한다. - 간단하게
for_loop
코드를 작성해보자.- 우선, A라는 리스트 객체를 작성한다.
for_loop
를 활용해서 리스트 안에 있는 것을 하나씩 출력한다.
A = ["철수", "영희", "길동"]
for i in A:
print(i)
철수
영희
길동
(1) Iterables
Iteration
을 한국어로 번역하면 되풀이다.- 그런데, 어떤 데이터 유형이
되풀이
를 할 수 있을가?List
와Tuple
이 되풀이가 될 수 있는 소재인 것은 확실하다.
- 어떤
객체(=Object)
가 있을 때, 이 객체가iterable
한것인지, 또는 아닌지 확인하는 함수(iter()
)도 있다.
print(iter("ABC"))
<str_iterator object at 0x7f2464faeb00>
print(iter(["A", "B", "C"]))
<list_iterator object at 0x7f2464faedd8>
print(iter(("A", "B", "C")))
<tuple_iterator object at 0x7f2464faedd8>
print(iter({"A": 1, "B": 3, "C": 3}))
<dict_keyiterator object at 0x7f2464fdd458>
- 그런데, 수치형의 경우에는 iteration이 적용되지 않는다.
iter(100)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-48-f3bbc5ecfc9b> in <module>()
----> 1 print(iter(100))
TypeError: 'int' object is not iterable
iter(3.14)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-eb85da4c3f57> in <module>()
----> 1 iter(3.14)
TypeError: 'float' object is not iterable
- 단일 수치형 데이터를 제외하고는 사실상 모든 데이터가
iterable
의 성질을 가지고 있다.
(2) next()
next()
는iterator
에서의next value
를 의미한다.- 다음 코드를 확인해보자.
A = ["철수", "영희", "길동"]
iterable = iter(A)
iterable
<list_iterator at 0x7f2464fb7dd8>
next(iterable)
철수
next(iterable)
영희
next(iterable)
길동
- 위 구분은
iter()
함수를 통해list
를iterable
할 수 있는 객체로 변환해준 것이다. - 그 다음
next()
함수를 통해서 저장된 값을 호출 한 것이다. for-loop
는 다시 말하면 이러한 과정이 포함되어 있는 것을 말한다.- (물론, 실무에서는 이렇게 할 필요는 없다. 그러나,
for-loop
의 문법이 내부에서는각각의 객체가
iterable
로 바뀐후 출력되는 과정을 표현하는 것이다. (아래 그림을 다시 확인하자)
- (물론, 실무에서는 이렇게 할 필요는 없다. 그러나,
(3) Dictionary
- Dictionary는
for-loop
에서 어떻게 작동될까? - 다음 코드를 통해 확인해보자.
D = {"A": 1, "B": 2, "C": 3}
for i in D:
print(D[i])
1
2
3
i
와key
값에 대응되어Value
값을 출력하는 형태다.- 또 다른 방법은
.values()
를 이용하는 것이다.
for v in D.values():
print(v)
1
2
3
- 이번에는
packing
&unpacking
개념을 도입해보자.
a, b = (1, 2)
print(a, b)
1 2
- 위 코드를
for-loop
에 응용할 것이다.
for i, j in [(1, 2), (3, 4), (5, 6)]:
print(i, j)
1 2
3 4
5 6
Dictionary
함수 중,item()
함수를 활용하면, key-value를 동시에 출력할 수 있다.
D = {"A": 1, "B": 2, "C": 3}
for k, v in D.items():
print('key = ', k, ', v = ', v)
key = A , v = 1
key = B , v = 2
key = C , v = 3
(4) Range()
- 지금까지 주로
List
,Dictionary
위주로For_loop
를 작성하고 있다. - 이번에는 수치형을 활용한
loop
를 확인해보자.
for num in (0, 1, 2, 3, 4):
print(num)
0
1
2
3
4
- Range()를 사용하면 (0, 1, 2, 3, 4)를 대체할 수 있다.
x = range(5)
iter(x) # iterable인 객체 확인을 할 수 있다.
<range_iterator at 0x7f2465127ae0>
for num in x:
print(num)
0
1
2
3
4
III. Conclusion
For Loop
는 기본문법이지만, 지금까지 배운 것처럼, 표현방법이 매우 다양하다.- 다양한 객체를 보다 쉽게
for-loop
에 활용할 수 있다는 장점이 있지만, 한편으로는 문법이 다양해서 처음 입문자가 배우기에는 조금 어려울 수 있기도 하다. - 다음 강의에서는 실제
for-loop
를 활용해서 데이터 전처리와 시각화의 예를 하나씩 들어서 설명하도록 한다.