파이썬,지도, 필터 및 절감

저작권 : 임의의 https://blog.csdn.net/qq_32662595/article/details/85052727 시드!

지도

지도 목록의 모든 요소 입력에 대응하는 기능이 될 것입니다. 이것은 자사의 사양입니다 :

명세서

map(function_to_apply, list_of_inputs)

대부분의 경우, 우리는 함수에 전달 하나 모든 요소를 ​​게시하고, 출력을 수집 할. 예를 들면 :

items = [1, 2, 3, 4, 5]
squared = []
for i in items:
    squared.append(i**2)

지도는 우리가 훨씬 더 달성하기 위해 간단하고 아름다운 방법을 사용할 수 있습니다. 이다 :

items = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, items))

대부분의 경우, 우리는지도와 일치하는 익명 함수 (람다)를 사용, 그래서 상단에 같은 일을했다. 뿐만 아니라 목록을 입력하기 위해, 우리는 심지어 목록을 작동 할 수 있습니다!

def multiply(x):
        return (x*x)
def add(x):
        return (x+x)

funcs = [multiply, add]
for i in range(5):
    value = map(lambda x: x(i), funcs)
    print(list(value))
    # 译者注:上面print时,加了list转换,是为了python2/3的兼容性
    #        在python2中map直接返回列表,但在python3中返回迭代器
    #        因此为了兼容python3, 需要list转换一下

필터

여과 필터 목록에서 요소 및 요구 사항을 충족하기 위해 모든 요소의 목록을 반환 요구 사항에 맞춰, 제기 즉, 반환 값이 True 기능이이 간단한 예에 요소를 매핑하는 경우 :

number_list = range(-5, 5)
less_than_zero = filter(lambda x: x < 0, number_list)
print(list(less_than_zero))  

# 译者注:上面print时,加了list转换,是为了python2/3的兼容性
#        在python2中filter直接返回列表,但在python3中返回迭代器
#        因此为了兼容python3, 需要list转换一下

이 필터는 for 루프 비슷하지만 내장 함수, 그리고 빠르게.

줄이다

당신이 목록에 대한 몇 가지 계산을 할 필요가 있고 결과를 반환 할 때 매우 유용한 기능입니다 줄입니다. 예를 들어, 당신은 정수의 목록의 제품을 계산해야합니다.

루프가이 작업을 수행하는 보통 파이썬에서 기본적인 사용할 수 있습니다.

이제 줄이기 위해 노력하자 :

from functools import reduce
product = reduce( (lambda x, y: x * y), [1, 2, 3, 4] )

람다 표현식

람다 식 그의 파티의 함수이다.
그들은 또한 다른 언어 익명 함수로 알려져 있습니다. 당신이 당신의 프로그램에서 두 번 기능을 사용하지 않으려면, 당신은 람다 표현식을 사용 할 수 있습니다, 그들은 정확히 일반 기능과 동일합니다.

프로토 타입

lambda 参数:操作(参数)

add = lambda x, y: x + y

print(add(3, 5))
# Output: 8

람다 식의 일부 응용 사례가 있다는 것을, 특별한 경우에 사용할 수 있습니다 :

목록 분류

a = [(1, 2), (4, 1), (9, 10), (13, -3)]
a.sort(key=lambda x: x[1])

print(a)
# Output: [(13, -3), (4, 1), (1, 2), (9, 10)]

병렬 정렬 목록

data = zip(list1, list2)
data.sort()
list1, list2 = map(lambda t: list(t), zip(*data))

추천

출처blog.csdn.net/qq_32662595/article/details/85052727