2014-11-13 2 views
-3
["Hey", ["What's Up", "John", "Good Evening"], "Smith"] 

파이썬에서이 배열 구조를 사용하면 가능한 모든 문장을 어떻게 만듭니 까? Hey What Up Up 스미스/헤이 존 스미스/Hey Good Evening Smith. 나는 그것을 알아 내기 위해 노력했지만 뇌가 너무 튀어서 적절한 재귀/기술을 생각하지 못했습니다. 미리 감사드립니다!배열 배열의 모든 가능성을 효율적으로 결합하려면 어떻게해야합니까?

+0

좋아요. 그러나 나는 그 패턴을 따르는 사람들을 원한다. 필자는 필요한 경우 더 많은 사양을 제공 할 수 있지만, 필자가 얻고있는 것은 매우 직설적이어야합니다. –

답변

2

입력 목록을 약간 정규화해야 목록 (문자열 및 목록) 목록이 아닌 목록 목록이됩니다. 그렇다면 쉽습니다. itertools :

>>> w = [["Hey"], ["What's Up", "John", "Good Evening"], ["Smith"]] 

>>> list(itertools.product(*w)) 
[('Hey', "What's Up", 'Smith'), 
('Hey', 'John', 'Smith'), 
('Hey', 'Good Evening', 'Smith')] 

>>> map(' '.join, list(itertools.product(*w))) 
["Hey What's Up Smith", 'Hey John Smith', 'Hey Good Evening Smith'] 
관련 문제