Python for loops in different ways

Page content

강의 홍보

I. 개요

  • 여러 형태의 반복문을 배우고 실습한다.
  • 한줄로 작성하는 반복문을 배우고 실습한다.

II. For Loop Basic Syntax

  • 파이썬의 기본 문법은 아래와 같다.
for <변수> in <iterable>:
    <코드>
  • 여기에서 iterable의 개념은 listtuple을 의미한다.
  • 간단하게 for_loop 코드를 작성해보자.
    • 우선, A라는 리스트 객체를 작성한다.
    • for_loop를 활용해서 리스트 안에 있는 것을 하나씩 출력한다.
A = ["철수", "영희", "길동"]
for i in A:
  print(i)
철수
영희
길동

(1) Iterables

  • Iteration을 한국어로 번역하면 되풀이다.
  • 그런데, 어떤 데이터 유형이 되풀이를 할 수 있을가?
    • ListTuple이 되풀이가 될 수 있는 소재인 것은 확실하다.
  • 어떤 객체(=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() 함수를 통해 listiterable할 수 있는 객체로 변환해준 것이다.
  • 그 다음 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
  • ikey값에 대응되어 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를 활용해서 데이터 전처리와 시각화의 예를 하나씩 들어서 설명하도록 한다.