2013-08-03 1 views
3

저는 파이썬 3에서 powerset을 만들려고합니다. itertools 모듈에 대한 참조를 발견했으며 그 페이지에 제공된 powerset 코드를 사용했습니다. 문제 : 코드가 itertools.chain 객체에 대한 참조를 반환하는 반면 powerset의 요소에 대한 액세스를 원합니다. 나의 질문 : 이것을 성취하는 방법?powersets in itertools를 사용하여 파이썬

통찰력에 대해 미리 감사드립니다.

+0

관련 항목 : [세트를 통해 결합하는 좋은 방법은 무엇입니까?] (http://stackoverflow.com/q/1482308/4279) – jfs

답변

14

itertools 함수는 iterators을 반환합니다.이 객체는 요구에 따라 느리게 결과를 생성합니다.

당신은 수있는 for 루프를 사용하여 객체를 통해 루프, 또는에 list()를 호출하여리스트로 결과를 돌려 다음 중 하나를

from itertools import chain, combinations 

def powerset(iterable): 
    "powerset([1,2,3]) -->() (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" 
    s = list(iterable) 
    return chain.from_iterable(combinations(s, r) for r in range(len(s)+1)) 

for result in powerset([1, 2, 3]): 
    print(result) 

results = list(powerset([1, 2, 3])) 
print(results) 

또한 변수에 객체를 저장하고 next() function에 사용할 수 있습니다 반복자에서 결과를 하나씩 가져옵니다.