>  기사  >  백엔드 개발  >  좋은 파이썬 루프를 작성하는 방법

좋은 파이썬 루프를 작성하는 방법

silencement
silencement원래의
2019-06-13 16:47:482952검색

좋은 파이썬 루프를 작성하는 방법

좋은 Python 루프를 작성하려면 for 문이 필요하지 않습니다! ! !

먼저 한 걸음 물러서서 for 루프 작성 뒤에 있는 직관이 무엇인지 살펴보겠습니다.

1. 일부 정보를 추출하기 위해 시퀀스를 탐색합니다.

2. 현재 시퀀스에서 다른 시퀀스를 생성합니다.

3. 저는 프로그래머이기 때문에 루프는 제2의 천성입니다

다행히도 Python에는 이러한 목표를 달성하는 데 도움이 되는 훌륭한 도구가 이미 있습니다! 당신이 해야 할 일은 마음을 바꾸고 사물을 다른 관점에서 보는 것뿐입니다.

모든 곳에 for 루프를 작성하지 않으면 무엇을 얻을 수 있나요?

1. 코드 줄이 적습니다.

2. 코드 가독성이 향상됩니다.

3. 코드 텍스트를 관리하려면 들여쓰기만 사용하세요.

아래 코드 뼈대를 살펴보세요.

아래 코드 구조를 살펴보세요.

# 1
with ...:
    for ...:
        if ...:
            try:
            except:
        else:

이 예제에서는 여러 수준의 중첩 코드를 사용하므로 읽기가 매우 어렵습니다. 나는 이 코드에서 관리 논리(with, try-Exception)와 비즈니스 논리(for, if)를 혼합하기 위해 들여쓰기를 무분별하게 사용한다는 것을 알았습니다. 관리 논리에 들여쓰기만 사용하는 규칙을 준수한다면 핵심 비즈니스 논리는 즉시 제거해야 합니다.

“扁平结构比嵌套结构更好” – 《Python之禅》

for 루프를 방지하려면 다음 도구를 사용할 수 있습니다

1. 목록 이해/생성기 표현

기존 시퀀스를 기반으로 새 시퀀스를 주로 컴파일하는 간단한 예를 살펴보세요.

result = []
for item in item_list:
    new_item = do_something_with(item)
    result.append(item)

MapReduce가 마음에 드신다면 , 맵 또는 Python의 목록 분석을 사용할 수 있습니다.

result = [do_something_with(item) for item in item_list]

마찬가지로 반복자를 얻으려는 경우 거의 동일한 구문을 사용하는 생성기 표현식을 사용할 수 있습니다. (어떻게 Python의 일관성에 빠지지 않을 수 있나요?)

result = (do_something_with(item) for item in item_list)

Function

한 시퀀스를 다른 시퀀스에 매핑하려면 map 함수를 직접 호출하세요. (대신 List comprehension을 사용할 수도 있습니다.)

doubled_list = map(lambda x: x * 2, old_list)

시퀀스를 하나의 요소로 줄이려면, Reduce

from functools import reduce
summation = reduce(lambda x, y: x + y, numbers)
를 사용하세요.

또한, Python의 많은 내장 함수는 반복자를 사용할 수 있습니다:

>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> all(a)
False
>>> any(a)
True
>>> max(a)
9
>>> min(a)
0
>>> list(filter(bool, a))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> set(a)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> dict(zip(a,a))
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
>>> sorted(a, reverse=True)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> str(a)
'[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]'
>>> sum(a)
45

위 내용은 좋은 파이썬 루프를 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.