반응형
호출 필터가 반환됨
저는 파이썬에서 필터의 개념을 배우고 있습니다.이렇게 간단한 코드를 실행하고 있습니다.
>>> 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, etc는 반복 가능한 객체를 반환하지만 목록은 반환하지 않습니다.바꿔 말하면
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) ]
python 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/calling-filter-returns-filter-object-at
반응형
'programing' 카테고리의 다른 글
| 마이크로소프트(MS.Office.Interop.엑셀은 매우 느리다. (0) | 2023.04.18 |
|---|---|
| Python에서 stderr로 인쇄하려면 어떻게 해야 하나요? (0) | 2023.04.13 |
| Resharper가 설치되어 있는 Visual Studio에서는 키보드 단축키가 활성화되지 않습니다. (0) | 2023.04.13 |
| Openpyxl에서 스타일 설정 (0) | 2023.04.13 |
| Python csv를 xlsx로 변환 (0) | 2023.04.13 |