일부 람다 함수를 작성했는데이를 이해할 수 없었습니다. 파이썬에서 lambda x: x if (x<3)
같은 것을 가질 수있는 방법이 있습니까? lambda a,b: a if (a > b) else b
이 정상적으로 작동합니다. 지금까지 lambda x: x < 3 and x or None
가 내가 가장 가까운 것으로 보인다.파이썬 람다 (else가있는 경우)
답변
람다는 어떤 함수와 마찬가지로 반환 값을 가져야합니다.
lambda x: x if (x<3)
x<3
이 아닌 경우 반환 할 내용을 지정하지 않았기 때문에 작동하지 않습니다. 기본적으로 기능 None
를 반환, 그래서 당신은
lambda x: x if (x<3) else None
을 할 수 그러나 아마 당신이 찾고있는 것은 if
조건 지능형리스트입니다. 예 :
In [21]: data = [1, 2, 5, 10, -1]
In [22]: [x for x in data if x < 3]
Out[22]: [1, 2, -1]
lambda x: x if x < 3 else None
의 무엇이 잘못 되었나요?
나의 이해는 목록 이해력이 문제는 반복을 언급하지 않는이 시나리오 – zinking
에 더 적합하다, 그래서 나는 당신이 무슨 뜻인지 모르겠어요. 당신은 정교 할 수 있습니까? – user4815162342
u r 맞습니다. 아마 추측 일 것입니다. -_- – zinking
좀비를 소생시키기 위해 죄송합니다.
나는 같은 질문에 대한 답을 찾고 있었다, 나는 "필터"내가 찾던 정확히 무엇을 남겼습니다 :
>>> data = [1, 2, 5, 10, -1]
>>> filter(lambda x: x < 3, data)
[1, 2, -1]
구현은 2.x 및 3 모두 동일합니다. X : https://docs.python.org/2/library/functions.html#filter https://docs.python.org/3/library/functions.html#filter
당신은 항상 조건 검사에 대한 '필터'를 호출 할 수 있습니다. 근본적으로 map()
은 iterables가 발생할 때마다 작동해야하므로 선택할 수는 없습니다. 그러나 필터는 선택 범위를 좁히는 데 도움이 될 수 있습니다. 예를 들어 1에서 19까지의 목록을 만들지 만 의 튜플을 만들려면의 짝수 만 제곱합니다.
x = list(range(1,20))
y = tuple(map(lambda n: n**2, filter(lambda n: n%2==0,x)))
print (y)
- 1. SQL :보기에 else가있는 경우 새 테이블 만들기
- 2. 람다의 파이썬 람다
- 3. 파이썬 람다 인쇄 공간
- 4. 파이썬 람다 동작
- 5. 파이썬 람다 문제
- 6. 파이썬 : 람다 형식의 문을 전달하십시오.
- 7. C++ 람다 식에서 값으로 캡처하는 경우 람다 개체로 값을 복사해야합니까?
- 8. 빈 인스턴스에 if/else가있는 레일스 인스턴스 메소드
- 9. 파이썬 람다 및 코드의 조각을 감안할 때
- 10. 람다 식 - 컬렉션에 추가하지 않을 경우
- 11. 람다
- 12. 람다, 람다 정의로 전화하기
- 13. 파이썬 디버거를 사용해야하는 경우
- 14. 파이썬 경우 앞서
- 15. 파이썬 2.7의 경우 else
- 16. 파이썬 문법의 경우
- 17. 람다
- 18. 람다 함수를 람다 식으로 변환하기
- 19. 처리 없음 파이썬 람다 식에서 len()에 유형을 입력 하시겠습니까?
- 20. 람다 계산식
- 21. 파이썬, 메소드의 조건 일 경우
- 22. 파이썬 : 중첩 된 경우 반복
- 23. 파이썬 MongoDB의 정규식 : 무시할 경우
- 24. 파이썬 -이 중복 된 경우
- 25. 파이썬 : 목록 : 범위의 경우 중
- 26. 파이썬 datetime이 iPhone과 다른 경우
- 27. 목록 이해 및 람다 파이썬 2.6 vr. python 2.7
- 28. 람다 튜토리얼 및 람다 함수 문제 해결
- 29. 기존 람다 식에서 동적 람다 만들기
- 30. 람다 검색은 '포함'나는 람다 식을 예상 결과
@ 우분투 - 고마워. 왜 그것을 지정하지 않고 None을 반환해야한다고 생각하는지 확신 할 수 없습니다. – root
함수는 기본적으로 None을 반환하기 때문에 합리적인 가정입니다. 기억해야 할 중요한 점은'lambda x :'다음에 오는 것은 문장이 아닌 * 표현식 *이어야한다는 것입니다. – unutbu
@root 때로는'lambda'를'def lambda (x, y) : return ...'으로 쓰는 것처럼 생각하는 것이 편리하다고 생각합니다. –