2014-11-12 1 views
1

을 삭제? x가 아무 것도 아니기로 지정했습니다.파이썬 itertools.combinations 내가 itertools.combinations 겉보기 자체를 삭제할 수 있습니다 파이썬에서 객체 것으로 나타났습니다

+0

발전기입니다. 생성기는 읽을 때 소비됩니다. 여러 번 사용하려면 목록으로 변환하십시오. – Javier

+1

반복자의 값은 메모리를 저장하기 위해 저장되지 않습니다. 또한 값을 계산할 필요가 없기 때문에 긴 루프와 관련되어있을 때 속도를 높일 수 있습니다. iterator는 go (비교 범위 대 xrange)에서 값을 계산합니다. – Evert

답변

1

itertools.combinations (기타 itertools 메서드와 함께)은 생성기 식을 반환합니다. 발전기는 정확하게 1 번만 읽을 수 있습니다.

당신은 한 번만 발전기 here

+0

이것에 대한 이유가 있습니까, 아니면 그냥 임의의 규칙입니까? – Alex

+0

@bill : 한 번만 정보를 생성 할 수있는 소스가 훨씬 더 많습니다. 네트워크 소켓. 그리고 중개 결과를 기억하지 않는다면 더 효율적입니다. 그래서 이것은 * 디자인에 의한 것입니다. –

+0

효율성을 위해. 이것이 발전기의 주된 목적입니다. – CoryKramer

0

Iterator 작품에 대한 자세한 내용을보실 수 있습니다. iterator 개체를 다시 사용할 수 없습니다. generatorsnext() 기능을 포함하고 Stop Iteration 오류를 발생으로

반복자는 당신이 그것을 here

3

당신은 발전기을 만들에 대해 읽을 수 있습니다 , 작동합니다. 나중에 값을 사용하여 목록에 저장하려는 경우 :

>>> import itertools 
>>> x = itertools.combinations('ABCD', 2) 
>>> list_of_x = list(x) 
>>> print(list_of_x) 
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')] 
>>> print(list_of_x) 
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]