list 및 islice 객체는 모두 반복 가능하지만 결과에서이 차이가 발생합니다. 여기itertools 라이브러리의 tee 함수
r = [1, 2, 3, 4]
i1, i2 = tee(r)
print [e for e in r if e < 3]
print [e for e in i2]
#[1, 2]
#[1, 2, 3, 4]
r = islice(count(), 1, 5)
i1, i2 = tee(r)
print [e for e in r if e < 3]
print [e for e in i2]
#[1, 2]
#[]
목록 개체와 islice 개체는 비슷하게 동작해야합니다. 맞습니까? – John
@ 존 아니요, 목록을 반복 할 때마다 매번 새로운 반복기가 생깁니다. 이는 여전히 값을 얻음을 의미합니다. 'islice()'를 사용하면 생성기를 얻을 수 있습니다. 생성기는 값을 한 번 생성 한 다음 고갈됩니다. 스스로 시도해보십시오. 목록을 두 번 반복 한 다음 islice를 가져 와서 두 번 반복하십시오. 동작의 차이점을 메모하십시오. –
@ 존 두 예제가 비슷하게 동작하게하려면'r = [1,2,3,4]'보다는'r = iter ([1,2,3,4])'를 사용하십시오. – clacke