유용한 제어문을 정리해보자.¶
- if / elif / else
- for / range
- while / break / continue
- enumerate
- dictionary loop
- list comprehension
Python Indentation 들여쓰기¶
4 spaces
number of spaces: block level
If / elif / else¶
In [1]:
if 2**2 == 4:
print('Obvious!')
In [2]:
a = 10
if a == 1:
print(1)
elif a == 2:
print(2)
else:
print('A lot')
for / range¶
range
- python에서는 마지막 숫자는 포함되지 않는다.
In [3]:
# 0, 1, 2, ..., 9
range(10)
Out[3]:
In [4]:
for i in range(4):
print(i)
In [5]:
i
Out[5]:
In [6]:
# 5, 6, 7, 8, 9
range(5, 10)
Out[6]:
In [7]:
x = ["a", "b", "c", "d", "e"]
for i in range(1, 4):
print(x[i])
In [8]:
for word in ['cool', 'powerful', 'readable']:
print('Python is {}'.format(word))
In [9]:
x
Out[9]:
In [10]:
for xi in x[1:4]:
print(xi)
while / break / continue¶
In [11]:
z = 1 + 1j
# z의 절대값이 100보다 커질 때까지 루프 돌아라.
while abs(z) < 100:
z = z**2 + 1
print(z, abs(z))
z
Out[11]:
break¶
루프에서 그만하고 빠져 나올 때, break한 후의 값은 가장 마지막 루프값이다.
In [12]:
z = 1 + 1j
while abs(z) < 100:
if z.imag < 0:
print("break!")
break
z = z**2 + 1
print(z)
z
Out[12]:
continue¶
아래 연산을 따라가면 element는 분모!
0이 되면 안되므로, 0이 나오면 처리하지 말고 다음 값을 계속 처리하고 싶을 때 아래와 같이 사용하면 된다.
- 예외처리의 한 방법
In [13]:
a = [1, 0, 2, 4]
for element in a:
if element == 0:
continue
print(1. / element)
Enumerate¶
아래와 같이 enumerate( )를 사용하면, 인덱스도 함께 만들어 준다.
- 자동 인덱스의 기능!
In [14]:
words = ('cool', 'powerful', 'readable')
for i in range(len(words)):
print((i, words[i]))
In [15]:
words = ('cool', 'powerful', 'readable')
for i, item in enumerate(words):
print((i, item))
Dictionary Loop¶
In [16]:
d = {'a': 1, 'b':1.2, 'c':1j}
d.items()
Out[16]:
사전의 경우 아래 두 가지 방법으로 루프를 돌릴 수 있다.¶
- key, value로 각각 받기.
- 딕셔너리의 엘리먼트로 받기.
In [17]:
for key, val in sorted(d.items()):
print('Key: {} has value: {}'.format(key, val))
In [18]:
for item in sorted(d.items()):
print('item:', str(item))
List Comprehensions¶
List Comprehensions을 되도록이면 사용하도록 하자!!
%%timeit
속도를 측정해주는 magic
In [19]:
%%timeit
x = range(10000)
y = []
for i in x:
y.append(i * 2)
In [20]:
%%timeit
y = [i*2 for i in range(10000)]
List Comprehensions의 속도가 훨씬 빠르다.¶
- 결과물은 같다.