반응형
저는 파이썬에서 필터의 개념을 배우고 있습니다. 나는 이와 같은 간단한 코드를 실행하고 있습니다.
>>> 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에서
참조 페이지 https://stackoverflow.com/questions/12319025
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python을 사용하여 문자열이 base64로 인코딩되었는지 확인 (0) | 2021.02.07 |
---|---|
파이썬 Python의 easy_install로 설치된 패키지를 제거하려면 어떻게해야합니까? (0) | 2021.02.07 |
파이썬 matplotlib에서 동적으로 서브 플롯 추가 / 생성 (0) | 2021.02.07 |
파이썬 Python에서 파일을 어떻게 복사합니까? (0) | 2021.02.07 |
파이썬 첫 번째 열이 문자열이고 나머지 열이 숫자 일 때 numpy.genfromtxt를 사용하는 방법은 무엇입니까? (0) | 2021.02.07 |
댓글