파이썬의 지퍼,지도 및 일반적인 사용의 람다

많은 초보 프로그래머 (그리고 파이썬에 새로운 심지어 숙련 된 프로그래머)는 종종 그들이 처음 볼 때 혼란을 얻을  zipmap및  lambda. 이 포스팅은 그 (희망) 관계를 설명 이러한 도구를 어떻게 사용 할 수있는 간단한 시나리오를 제공 할 것입니다.

시작하려면, 당신은 값이 명 컬렉션을 가지고 있다고 가정하고 유지해야하는 각에서 가장 큰 (또는 작은). 두 개의 서로 다른 시스템에서이 될 수 측정, 두 개의 서로 다른 서비스에서, 아니면 그냥 아무것도에 대한 주식 시세. 예를 들어 우리는 단지 일반적인 유지하겠습니다.

그래서, 당신이있어 가정  a 및  b정수의 두 목록을 :. 목표는 하나 개의 목록, 중 값이 각 인덱스에서 가장 큰 유지에 이러한 병합하는 것입니다.

>>> a = [1, 2, 3, 4, 5]
>>> b = [2, 2, 9, 0, 9]

이건 정말 절차 적으로해야 할 어려운 일이 아니다. 당신은  할 수  에서 각 항목을 비교하는 간단한 함수를 작성  a 하고  b다음 새 목록에서 가장 큰 저장합니다. 그것은 다음과 같이 보일 수 있습니다

def pick_the_largest(a, b):
    result = []  # A list of the largest values

    # Assume both lists are the same length
    list_length = len(a)
    for i in range(list_length):
        result.append(max(a[i], b[i]))
    return result

그것은 매우 간단하고 읽기 쉽게하지만,이 문제를 해결하기 위해 더 간결하고, 더 파이썬 방법이있다.

지퍼

처음 모습을 수 있습니다  zip. 이 함수는 두 개의 동일한 길이의 컬렉션을 얻어, 그 쌍으로 함께 병합. 우리는 값의 우리의 목록에이를 사용하는 경우, 우리는 다음을 얻을 :

>>> zip(a, b)
[
    (1, 2),
    (2, 2),
    (3, 9),
    (4, 0),
    (5, 9)
]

이제 하나 개의 목록을 가지고 있지만 그것은에서 항목의 쌍을 포함  a 하고를  b. 자세한 내용은 체크 아웃  파이썬 문서의 지퍼를 .

람다

lambda 익명 함수를 만들 수있는 단지 속기이다. 종종 만드는 데 사용되는  일회성  (당신이 다른 함수에 매개 변수로 함수를 전달해야 할 때 일반적으로 시나리오에 대한) 함수를. 이 매개 변수를 취할 수 있으며, 식의 값을 반환합니다. 자세한 내용은 파이썬 참조  람다에 대한 문서를 .

lambda <input>: <expression>

지금, 당신은 튜플 (또는 값의 쌍)를 가지고 있다고 가정하면 함수를 만들 수 있습니다 집어 들고 한 쌍의 큰 :

lambda pair: max(pair)

지도

map 함수를 받아, (예를 들면,리스트 등) 반복 가능한 각 항목에 적용된다. 당신의 더 완전한 정의를 얻을 수있는  파이썬 문서에서지도를 하지만, 기본적으로 다음과 같은 :

map(some_function, some_iterable)

우리 곳이다  lambda 발현이 편리하고, 이후  zip 다시 표시 반복 가능한, 우리는 (나는 그것을 읽을 수 있도록 3 개 라인을 통해 깰 수있을 거라) 간결한 한 줄 우리의 원래의 문제에 대한 해결책을 작성할 수 있습니다. 상향식에서이 코드를 읽어보십시오.

>>> map(  # apply the lambda to each item in the zipped list
        lambda pair: max(pair),  # pick the larger of the pair
        zip(a, b)  # create a list of tuples
    )
[2, 2, 9, 4, 9]

그래서, 모두 함께 퍼팅

>>> a = [1, 2, 3, 4, 5]
>>> b = [2, 2, 9, 0, 9]
>>> map(lambda pair: max(pair), zip(a, b))
[2, 2, 9, 4, 9]

파이썬의  maplambda, 그리고  zip 강력하고 효과적인 도구이다! 이 게시물이 유익하고있다 바랍니다. 읽어 주셔서 감사합니다 :)

원본 링크 :

 https://bradmontgomery.net/blog/pythons-zip-map-and-lambda/

게시 27 개 원래 기사 · 원의 찬양 3 · 조회수 3331

추천

출처blog.csdn.net/weixin_40977054/article/details/104107489