2014-08-30 1 views
1

0-9999에서 itertools.product을 사용하여 숫자 목록을 만들려고합니다.itertools.product의 결과를 병합 하시겠습니까?

numbers = ['0','1','2','3','4','5','6','7','8','9'] 
itertools.product(numbers,numbers,numbers,numbers) 

을 내가 0001 같은 항목을 원하는 동안, 나는 또한 001, 011을 좀하고 싶습니다 : 나는 다음을 수행하여 0000-9999에서 목록을 만들 수 있어요.

이것을 포함시키는 가장 효과적인 방법은 무엇입니까? itertools.product(numbers,numbers,numbers)itertools.product(numbers,numbers)으로 전화를 걸어야하고 어떻게 든 원본과 결합하거나 깨끗한 방법이 있습니까?

다른 두 가지 호출을하고 결합해야하는 경우 누군가가이 작업을 수행하는 방법을 알려줄 수 있습니까? 나는 .append()을 사용하려고하지만,이 오류가 발생합니다 : 어떤 도움

'itertools.product' object has no attribute 'append' 

감사합니다.

답변

3

당신은 (표시 목적으로 여기 크기 감소) 중첩 listcomp 또는 genexp 사용할 수 있습니다

>>> numbers = ['0','1','2'] 
>>> [''.join(p) for n in range(1,4) for p in product(numbers, repeat=n)] 
['0', '1', '2', '00', '01', '02', '10', '11', '12', '20', '21', '22', '000', '001', '002', '010', '011', '012', '020', '021', '022', '100', '101', '102', '110', '111', '112', '120', '121', '122', '200', '201', '202', '210', '211', '212', '220', '221', '222'] 
1
numbers = ['0','1','2','3','4','5','6','7','8','9'] 
list(''.join(subl) for subl in itertools.chain.from_iterable(itertools.product(numbers, repeat=i) for i in range(1,5)))