[Python 기초 정리] 흐름 제어
몰랐거나 잊어버리기 쉬운 내용을 정리했습니다.
흐름 제어
1. If
1.1 참/거짓 판별
- True : "values", [values], (values), {values}, 1
- False : "", [], (), {}, 0, None
1.2 산술, 관계, 논리 우선순위
산술 > 관계 > 논리 순서로 적용
- 산술: +, -, *, /
- 관계: >, >=, <, <=, ==, !=
- 논리: and, or, not
>>> print(5 + 10 > 0 and not 7 + 3 == 10)
False
1.3 Comparison Chaining
아래와 같은 조건도 가능하다.
if (a < b < c): # 가능. a < b and b < c와 동일하다.
...
if (a < b > c): # 가능. a < b and b > c와 동일하다.
...
comparison chaining
Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).
Formally, if a, b, c, …, y, z are expressions and op1, op2, …, opN are comparison operators, then a op1 b op2 c ... y opN z is equivalent to a op1 b and b op2 c and ... y opN z, except that each expression is evaluated at most once.
Note that a op1 b op2 c doesn’t imply any kind of comparison between a and c, so that, e.g., x < y > z is perfectly legal (though perhaps not pretty).
2. for
for 문
(C처럼) 사용자가 이터레이션 단계와 중지 조건을 정의할 수 있도록 하는 대신, 파이썬의 for 문은 임의의 시퀀스 (리스트나 문자열)의 항목들을 그 시퀀스에 들어있는 순서대로 이터레이션 합니다.
문법
for i in <collection>:
<loop body>
2.1 range
Built-in Function range
class range(stop) class range(start, stop[, step]) # [start, stop)
The range type represents an immutable sequence of numbers and is commonly used for looping a specific number of times in for loops.
- start: The value of the start parameter (or 0 if the parameter was not supplied)
- stop: The value of the stop parameter
- step: The value of the step parameter (or 1 if the parameter was not supplied)
Range objects implement the collections.abc.Sequence ABC, and provide features such as containment tests, element index lookup, slicing and support for negative indices.
>> r = range(0, 20, 2) >> r range(0, 20, 2) >> 11 in r False >> 10 in r True >> r.index(10) 5 >> r[5] 10 >> r[:5] range(0, 10, 2) >> r[-1] 18
2.2 Iterables
많은 경우에 range()가 돌려준 객체는 리스트인 것처럼 동작하지만, 사실 리스트가 아닙니다. 이터레이트할 때 원하는 시퀀스 항목들을 순서대로 돌려주는 객체이지만, 실제로 리스트를 만들지 않아서 공간을 절약합니다.
이런 객체를 이터러블 이라고 부릅니다. 공급이 소진될 때까지 일련의 항목들을 얻을 수 있는 무엇인가를 기대하는 함수와 구조물들의 타깃으로 적합합니다. 우리는 for 문이 그런 구조물임을 보았습니다.
문자열, 리스트, 튜플, 집합, 사전 -> iterable
iterable 리턴 함수 : range, reversed, enumerate, filter, map, zip
2.3 break, continue, else
break 문은, C처럼, 가장 가까이서 둘러싸는 for 나 while 루프로부터 빠져나가게 만듭니다.
루프 문은 else 절을 가질 수 있습니다; 루프가 이터러블의 소진이나 (for의 경우) 조건이 거짓이 돼서 (while의 경우) 종료할 때 실행됩니다. 하지만 루프가 break 문으로 종료할 때는 실행되지 않습니다.
루프와 함께 사용될 때, else 절은 if 문보다는 try 문의 else 절과 비슷한 면이 많습니다: try 문의 else 절은 예외가 발생하지 않을 때 실행되고, 루프의 else 절은 break가 발생하지 않을 때 실행됩니다.
3. while
while <expr>:
<statement(s)>
while 문도 for 문처럼 else 문을 사용할 수 있다. (break시에는 실행 x)
Author And Source
이 문제에 관하여([Python 기초 정리] 흐름 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@haebin/Python-기초-정리-흐름-제어저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)