문제

나는 람다 함수를 쓰고 이것을 알아낼 수 없었습니다.Python에서 lambda x: x if (x<3)와 같은 것을 갖는 방법이 있습니까?lambda a,b: a if (a > b) else b가 확인되면서 확인됩니다.지금까지 lambda x: x < 3 and x or None가 내가 발견 한 가장 가까운 것 같습니다.

도움이 되었습니까?

해결책

모든 기능과 마찬가지로 람다는 반환 값을 가져야합니다.

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가 무엇이 잘못 되었습니까?

좀비를 소생시키기 위해 죄송합니다.

나는 같은 질문에 대한 답변을 찾고 있었고, "필터"가 내가 찾고있는 것을 정확하게 제공했음을 발견했습니다 :

>>> 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까지 목록을 생성하지만 의 튜플 squares of rugge의

를 만들고 싶습니다.

x = list(range(1,20))

y = tuple(map(lambda n: n**2, filter(lambda n: n%2==0,x)))

print (y)
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top