기본 필터링이 필요한 것을 발견했습니다. 목록이 있고 항목의 속성으로 필터링해야합니다.
내 코드는 다음과 같습니다.
my_list = [x for x in my_list if x.attribute == value]
그러나 나는 이것을 이렇게 쓰는 것이 낫지 않을 것이라고 생각했다.
my_list = filter(lambda x: x.attribute == value, my_list)
더 읽기 쉽고 성능을 위해 필요한 경우 람다를 꺼내어 무언가를 얻을 수 있습니다.
질문은 : 두 번째 방법을 사용할 때주의 사항이 있습니까? 성능 차이가 있습니까? Pythonic Way ™가 완전히 누락되어 다른 방법으로 (예 : 람다 대신 itemgetter 사용)해야합니까?
filter
목록이 아닌 필터 생성기 객체 라고 말해야 합니다.
filter
이 더 읽기 쉽다 는 데 동의 할 것 입니다. listcomp에서 그대로 사용할 수 있지만 전달할 람다 (또는 이와 유사하게 구성partial
되거나operator
함수 등으로)로 묶어야하는 간단한 표현이있는filter
경우 listcomps가 이기게됩니다.