2017-12-10 12 views
-4

配列(異なるサイズでもよい)からsub_arrayesを抽出する方法を知りたいと思います。配列を与えられたことにより、したがって、私のようなサブ配列要素の合計をしたい:Pythonの配列の演算子

Array = [1, 2, 3] 
SubArray = [(1),(2),(3),(1,2),(2,3),(1,2,3)] 

私の質問は、どのように最終的な結果として、このようなサブ異なるサイズの配列の配列とどのようにXORサブアレイ要素を作成することですPythonで。

私はnumpyを使いたくありません!

+0

最終結果としてxor ...の意味がわからない場合は、これを明確にすると役に立ちます。 –

答えて

1

:第二の問題(XOR-INGのすべての要素を)について

sublist = [] 
for i in range(1, len(mylist)+1): # number of items in sublist 
    for j in range(len(mylist)-i+1): # index of sublist 
     sublist.append(tuple(mylist[j:j+i])) 

を、あなたが使用することができます。

result = 0 
for sub in sublist: 
    for e in sub: 
     result ^= e 

ただし、この後にsublistが必要ない場合は、次のようにしてください:

sublist = [] 
for i in range(1, len(mylist)+1): # number of items in sublist 
    for j in range(len(mylist)-i+1): # index of sublist 
     for e in mylist[j:j+i]: 
      result ^= e 

これにより、いくつかの冗長性が削除されます。

+0

@Braianはい、期待された出力ではありませんか? –

+0

これはPython長さ1のタプルを表示します。これは 'len((1、))'を試してみると1になります。 'a =(1)'と 'a =(1)'を試すこともできます。最初は数値で、2番目はタプルです。 –

+0

@Braian XORのステップを含むように私の答えを編集しました。 –

1

あなたはこのようなものを使用することができます:あなたが使用することができ

itertools.chain(*(itertools.combinations(Array, r=r) for r in range(1, len(Array)+1)))