2017-03-19 16 views
-2

可能な組み合わせをリストからどのように取得するのかと思います。リストを使用したPythonの組み合わせ

list1 = [1,5,3] 

これは返す必要があります:

ans = [1,5,3,15,13,51,53,31,35,153,135,315,351,531,513] 

回答をありがとう
アダム

+0

これらはすべて整数ですか?あなたは何を試しましたか? – Kasramvd

+0

[リストの要素のすべての可能な組み合わせを取得する方法は?](http://stackoverflow.com/questions/464864/how-to-get-all-possible-combinations-of-a-list-s-要素) –

答えて

0

ヨはそのようにそれを行うことができます。

import itertools 
import operator 
import numpy as np 
a=[1,2,3] 
[list(i) for i in reduce(operator.add,[list(itertools.combinations(a,i)) for i in range(1,len(a)+1)])] 

すると結果は

です
[[1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]] 

あなたはそれはあなたが質問に記載された正確な形式を持っているしたい場合は、

import itertools 
import operator 
import numpy as np 
a=[1,2,3] 
a=[str(i) for i in a] 
[int(''.join(list(i))) for i in reduce(operator.add,[list(itertools.combinations(a,i)) for i in range(1,len(a)+1)])] 

を行うことができ、結果はあなたがpermutations、ないcombinationsたい

[1, 2, 3, 12, 13, 23, 123] 
2

です:

from itertools import permutations 

list1 = [1,5,3] 
n = len(list1) 

print([int("".join(map(str, ints))) for i in range(n) 
     for ints in permutations(list1, i + 1)]) 
# [1, 5, 3, 15, 13, 51, 53, 31, 35, 153, 135, 513, 531, 315, 351] 
0

ブルートフォース:

import random 

list1 = [1,5,3] 
brute = 1000 

combos = [] 
for i in range(brute): 
    random.shuffle(list1) 
    z = ''.join(str(x) for x in list1) 
    for i in range(len(list1)): 
     combos.append(int(z[i:])) 
combos = sorted(list(set(combos))) 
print combos 




>>>[1, 3, 5, 13, 15, 31, 35, 51, 53, 135, 153, 315, 351, 513, 531] 
関連する問題