Python 공식문서 - 4.기타 제어 흐름 도구

Min·2022년 10월 6일
0

Python

목록 보기
4/4
post-thumbnail

점프투 파이썬으로 문법을 전체적으로 훑어보았다.
큰 틀은 잡기에 좋았지만 상세내용은 파이썬 공식문서를 통해 내용을 정리해 보고자 한다.

1.if 문

>>> x = 2
>>> if x < 0:
...     x = 0
... elif x == 1:
...     print('1')
... else:  # 선택적 사용
...     print('else 부분')
else 부분

2.for 문

임의의 시퀀스 (리스트나 문자열)의 항목들을
그 시퀀스에 들어있는 순서대로 이터레이션 하게 된다.

... words = ['min', 'python']
>>> for w in words:
...     print(w, len(w))
min 3
python 6

컬렉션을 이터레이트 하는 동안 같은 컬렉션을 수정하는 코드는
올바르게 동작하도록 만들기 힘들다.
대신, 보통 컬렉션의 복사본으로 루프를 만들거나 새 컬렉션을 만드는 것이 더 간단하다.

users = {'min': 'active', 'python': 'inactive'}

# 복사본 컬렉션 생성
for user, status in users.copy().items():
    if status == 'inactive':
        del users[user]

# 새로운 컬렉션 생성
active_users = {}
for user, status in users.items():
    if status == 'active':
        active_users[user] = status

3.range() 함수

range(이상, 미만, 스텝)
숫자들의 시퀀스로 이터레이트할 필요할때 사용하며 수열을 만든다.

>>> for i in range(5): # 끝값을 포함되지 않는다.
...     print(i)
0 1 2 3 4
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(-10, -100, -30))
[-10, -40, -70]

시퀀스의 인덱스들로 이터레이트 하려면, 다음처럼 range()와 len() 을 결합 가능하나,
대부분은, enumerate() 함수를 쓰는 것이 편리하다(루프 테크닉 참고)

>>> a = ['happy', 'python']
>>> for i in range(len(a)):
...     print(i, a[i])
...
0 happy
1 python

범위를 그냥 인쇄하면 이상한 일이 일어난다.

>>> range(10)
range(0, 10)

많은 경우에 range()가 돌려준 객체는 리스트인 것처럼 동작하지만, 사실 리스트가 아니다.
이터레이트할 때 원하는 시퀀스 항목들을 순서대로 돌려주는 객체이지만,
실제로 리스트를 만들지 않아서 공간을 절약한다.

이런 객체를 이터러블이라고 부른다.
공급이 소진될 때까지 일련의 항목들을 얻을 수 있는
무엇인가를 기대하는함수와 구조물들의 타깃으로 적합하다.
이터러블을 취하는 함수의 예는 sum()이다.

>>> sum(range(4))  # 0 + 1 + 2 + 3
6
profile
slowly but surely

0개의 댓글