stackoverflow.com/questions/44420135/filter-object-becomes-empty-after-iteration/44420191#44420191
>>> l = range(10)
>>> k = filter(lambda x: x > 5, l)
>>> list(k)
[6, 7, 8, 9]
>>> list(k)
[]
filter 함수 나온 결과값 확인하기 위해 프린트 찍고 그 값을 다른 곳에 넘기니까 빈 값이 나와 문제가 생긴적이 있다
위 사이트에 따르면 filter 함수는 이터레이터 객체를 반환하고 이 객체는 한번만 iterate 가능하다고 함
첫번째 list() 함수를 호출함으로서 끝까지 다 돌았으므로
두번째 list() 함수호출에서는 끝까지 다 돌아서 더이상 literate 할 것이 없으므로 빈값을 반환한다고 함
참고로 python2 에서 filter는 list 를 리턴하기 때문에 위와같은 문제가 생기지 않는다고 함
'시행착오 > [python]' 카테고리의 다른 글
[python] 파이썬 daemon 데몬 만들기 (0) | 2021.05.06 |
---|---|
[python] 로컬 및 원격 서버내 파일/디렉토리 존재 확인법 (0) | 2021.05.04 |
[python] paramiko ssh 연결되어있는 상태인지 체크법 (0) | 2021.04.15 |
[python] asyncio + multithreading: one asyncio event loop per thread (0) | 2021.04.14 |
[python] __enter__, __exit__ context manager - 파이썬 with custom하기 (0) | 2021.04.02 |