반응형
Python3의 필터 [중복]
이 질문에 이미 답변이 있습니다.
저는 용어에서 필터의 개념을 배우고 있습니다. 나는 이와 같은 간단한 코드를 실행하고 있습니다.
>>> def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
대신에 이와 같은 메시지를받을 수 있습니다.
<filter object at 0x00FDC550>
이것은 무엇을 의미 하는가? 내 필터링 된 개체 즉, 나오는 목록이 해당 메모리 위치에 저장 의미입니까? 필요한 목록은 어떻게 얻었습니까?
python 3.x를 사용할 것입니다. python3에서 filter
, map
, zip
, 등 반복 가능 인 객체가 아닌 목록 을 반환합니다 . 다시 말해,
filter(func,data) #python 2.x
다음과 달라집니다.
list(filter(func,data)) #python 3.x
나는 당신이 (종종) 게으른 의미로 필터링을 원하기 때문에 변경 될 것이라고 생각합니다. 모든 메모리를 사용할 필요는 없습니다. 반복 중입니다.
이제 python3.x의 다음과 거의 동일합니다.
( x for x in data if func(x) )
반대 :
[ x for x in data if func(x) ]
꽤 2.x에서
목록을 원 그냥 그냥
list(filter(f, range(2, 25)))
그럼에도 불구하고 for
루프를 사용 하여이 객체를 반복 할 수 있습니다 .
for e in filter(f, range(2, 25)):
do_stuff(e)
참고 URL : https://stackoverflow.com/questions/12319025/filters-in-python3
반응형
'IT' 카테고리의 다른 글
마지막 열을 제외하고 표 셀 너비를 최소로 설정하고 치수는? (0) | 2020.08.16 |
---|---|
C #을 사용하여 Android 앱 개발 (0) | 2020.08.16 |
ASP.NET Web API에서 async / await 사용 (0) | 2020.08.16 |
모범 사례 : 속성에서 예외 발생 (0) | 2020.08.16 |
JavaScript에서 모듈로 연산자 (%)를 어떻게 사용할 수 있습니까? (0) | 2020.08.16 |