2012-03-16 9 views
1

大きなリストを複数の組み合わせに分割することに問題があります。次に例を示します。リストのサブリストを他のサブリストに分割する

だが、私はこのリストを持っているとしましょう:

x = [['a','b'],['c','f'],['q','w','t']] 

と私は

x = [['a','b'],['c','f'],['q','w'],['q','t'],['w','t']] 

で終わるしたいので、基本的に

['q','w','t'] 

なり
['q','w'],['q','t'],['w','t'] 

は、私はitertoolsの組み合わせで

['q','w','t'] 

[['q','w'],['q','t'],['w','t']] #notice the extra brackets 

に変換することができます方法を見て、その後私は、私が欲しいものではありませんどの

x = [['a','b'],['c','f'],[['q','w'],['q','t'],['w','t']]] #notice the extra brackets 

で立ち往生しています。

私はこれをどのようにしたらよいでしょうか?

EDIT:

from itertools import combinations 

x = [['a','b'],['c','f'],['q','w','t']] 

new_x = [] 

for sublist in x: 
    if len(sublist) == 2: 
     new_x.append(sublist) 
    if len(sublist) > 2: 
     new_x.append([list(ele) for ele in (combinations(sublist,2))]) 

は、私は、一般的に平らにするために、ネストされたリストの内包表記を使用してあなたに

+4

2番目の 'append(...)'を 'extend(...) 'に変更するだけです。 –

+0

ありがとうgnibbler、それは役に立ちました! – Akavall

答えて

6

ありがとう:ここ

は、私が欲しい結果を与えるものではありません「ソリューション」、です

>>> x = [['a','b'],['c','f'],['q','w','t']] 
>>> [c for s in x for c in itertools.combinations(s, 2)] 
[('a', 'b'), ('c', 'f'), ('q', 'w'), ('q', 't'), ('w', 't')] 
+0

これは私が欲しいものです!どうもありがとうございました! – Akavall

2

これを行うには最良の方法ではありませんが、下にはかなり明確です立っている:

関連する問題