2017-05-17 1 views
0

파이썬에 대해 더 잘 이해하기 위해 온라인 here에서 찾은 코드를 파헤 치려고합니다. 여기Python : 생성자 표현식의 값이 itertools.product 객체 일 때 인쇄하십시오.

from itertools import chain, product 

def generate_groupings(word_length, glyph_sizes=(1,2)): 
    cartesian_products = (
     product(glyph_sizes, repeat=r) 
     for r in range(1, word_length + 1) 
    ) 

word_length 내가 cartesian_products 발전기의 내용을 평가하기 위해 노력하고있어 3

입니다 :

내가에 대한 느낌을 얻기 위해 노력하고있어 코드 조각입니다. this 질문에 대답을 읽은 후에 수집 할 수있는 것부터, 생성자는 콜렉션의 일부로 호출 될 때까지 반복하지 않으므로 (따라서 값을 산출하지 않음) 생성자를 목록에 배치했습니다.

list(cartesian_products) 
Out[6]: 
[<itertools.product at 0x1025d1dc0>, 
<itertools.product at 0x1025d1e10>, 
<itertools.product at 0x1025d1f50>] 

분명히 지금은 발전기 내부를 볼 수 있지만 itertools.product 개체의 세부 정보보다 구체적인 정보를 얻기를 바랬습니다. 이것을 달성 할 수있는 방법이 있습니까? 당신이 발전기를 배출 걱정하지 않는 경우

+1

에 대해 다음을 얻을 것이다'itertools.product' 객체는 아무것도 노출되지 않도록 내성에 유용합니다. 당신은 그들이 생산 한 것을보기 위해 반복 할 수 있습니다. 그러나 알고리즘의 나머지 부분은 지쳐서 사용할 수 없습니다. 이미'cartesian_products'를 다 써 버렸기 때문에 중요하지 않습니다. – user2357112

답변

1

, 당신은 사용할 수 있습니다

list(map(list,cartesian_products)) 

당신은 word_length = 3

Out[1]: 
[[(1,), (2,)], 
[(1, 1), (1, 2), (2, 1), (2, 2)], 
[(1, 1, 1), 
    (1, 1, 2), 
    (1, 2, 1), 
    (1, 2, 2), 
    (2, 1, 1), 
    (2, 1, 2), 
    (2, 2, 1), 
    (2, 2, 2)]] 
관련 문제