필터(함수 또는 없음, 시퀀스), 여기서 시퀀스는 목록, 튜플, 문자열일 수 있습니다. 이 함수의 기능은 요소 자체를 매개변수로 사용하여 함수를 호출할 때 True 또는 bool(반환 값)을 True로 반환하는 시퀀스의 모든 요소를 필터링하고 이를 목록으로 반환하는 것입니다. 두 개의 매개변수(함수, 시퀀스) 중 함수는 하나의 값만 반환할 수 있습니다.
간단한 코드부터 시작해 보겠습니다.
print max(filter(lambda x: 555555 % x == 0, range(100, 999)))
코드는 555555를 출력한다는 뜻입니다. 가장 큰 세 자리 숫자의 약수는 얼마입니까?
우선 이 코드의 첫 번째 깨달음 포인트는 목록을 필터링하는 데 사용되는 Python 내장 함수인 filter
filter() 함수입니다. 가장 간단한 방법은 목록을 필터링하는 함수를 사용하고, 목록의 각 항목을 필터 함수에 전달하고, 필터 함수가 false를 반환할 때 목록에서 항목을 삭제하는 것입니다.
filter() 함수에는 함수와 목록이라는 두 가지 매개변수가 포함됩니다. 즉, 함수는 함수 매개변수가 반환한 결과가 true인지 여부에 따라 list 매개변수의 항목을 필터링하고 최종적으로 새로운 목록을 반환합니다.
간단히 말하면 filter() 함수는 다음 코드와 같습니다.
c = [b for b in a1 if b > 2] print c
두 번째 지식 포인트는 람다()입니다. 함수
Python은 이 구문을 지원하므로 사용자는 람다라고 불리는 이러한 함수를 Lisp에서 차용했습니다.
def f(x): return x * 2 g = lambda x: x * 2 (lambda x: x * 2)(3)
코드에서 볼 수 있듯이 람다 함수는 일반 함수와 동일한 작업을 수행하며 람다에는 매개변수 주위에 괄호가 없습니다. list 및 무시됨 반환 키워드(전체 함수에 한 줄만 있고 함수에 이름이 없기 때문에 반환은 암시적으로 존재하지만 변수에 할당되어 호출될 수 있음)
코드의 마지막 부분은 다음을 보여줍니다. 람다 함수는 인라인 함수일 뿐입니다.