시간 프로세싱이나 메모리 사용 및 기타 사항에있어 반복이 더 좋거나 람다 함수가 더 좋습니까? 예람다 함수가 더 좋거나 반복적입니까?
:
x = [10, 20, 30]
for y in x:
if y>10 or y<20:
print y
이것이 더 또는 람다 함수? 시간 처리, 메모리 사용 또는 다른 비교와 관련하여 답변을 원합니다.
시간 프로세싱이나 메모리 사용 및 기타 사항에있어 반복이 더 좋거나 람다 함수가 더 좋습니까? 예람다 함수가 더 좋거나 반복적입니까?
:
x = [10, 20, 30]
for y in x:
if y>10 or y<20:
print y
이것이 더 또는 람다 함수? 시간 처리, 메모리 사용 또는 다른 비교와 관련하여 답변을 원합니다.
새로운 목록이나 생성기를 만들고 싶지 않으므로 고전적인 루프가 분명 좋습니다.
이러한 개체를 만들면 메모리 효율이 향상되고 각 요소에 대해 함수를 호출하지 않으면 성능이 향상됩니다.
반복자와 람다는 완전히 다른 두 가지입니다. lambda는 간단한 인라인 함수이고 iterator는 연속적인 객체를 반환하는 객체입니다. 예제에는 두 가지 주요 문제점이 있습니다. y
대신 x
을 테스트하고 x
의 모든 값이 y>10 or y<20
으로 전달됩니다. 그래서, 그 수정, 당신의 예는 반복자 및이 같은 람다를 사용하여 작성 될 수있다 :
for value in filter(lamdba y: y < 10 or y > 20, x):
print(value)
가이 작업을 수행 할 수있는 몇 가지 방법이 있지만, 성능면에서 당신이있어 어떤 데이터에 따라 달라집니다 처리 방법, 처리 방법 및 처리량에 대한 정보를 제공합니다. 유용한 안내서는 http://wiki.python.org/moin/PythonSpeed/PerformanceTips을 참조하십시오.
특히 매핑 할 표현식의 복잡성이 증가함에 따라 목록 표기법이 기능 표기법보다 훨씬 쉽게 읽을 수 있습니다. 또한 목록 이해는지도와 람다를 사용하는 솔루션보다 훨씬 빠르게 실행됩니다. 이것은 람다 함수를 호출하면 새로운 스택 프레임을 생성하고리스트 이해력의 표현식은 새로운 스택 프레임을 만들지 않고 평가되기 때문입니다. >> 즉 http://python-history.blogspot.com/2010/06/from-list-comprehensions-to-generator.html
, 당신은 람다 및 루프/이해/발전기 사이에 선택의 여지가 있는지, 후자를 사용합니다. 나는 당신의 예제를 쓰는 가장 무용지물이 같을 것이라고 생각한다.
print [y for y in x if y < 20]
왜 아래로? 이것은 우스꽝 스럽다. – sam