2012-04-11 7 views
1

新しいシーケンスに各マージタプルのペアのすべての可能な組み合わせを探します常にグラスゴーで終わるのアイルから始まる(あなたが旅を分割することができ、すべての可能な方法を見つけるために私はすべてのペアの組み合わせを検索し、リストに各(タプル)のペアを追加し、コード(のpython)を持っている。私はこの順序で(場所のシーケンス)路線を走行バス路線を持って

pairs = [('Ayr', 'Newton'),('Ayr', 'Troon'),('Ayr', 'Paisley'),('Ayr', 'Glasgow'),('Newton', 'Troon'),('Newton', 'Paisley'),('Newton', 'Glasgow'),('Troon', 'Paisley'),('Troon', 'Glasgow'),('Paisley', 'Glasgow')] 

私が最後にしたいのは、(Ayrで始まり、Glasgowで終わる)ペアのすべての可能な組み合わせを持つリストまたはタプルのリスト(または最も効率的なメモリの最も効率的なシーケンス)のリストです。

final_splits = [['Ayr', 'Glasgow'], ['Ayr', 'Newton', 'Glasgow'], ['Ayr', 'Newton', 'Troon', 'Glasgow'], ['Ayr', 'Newton', 'Troon', 'Paisley', 'Glasgow'], ['Ayr', 'Troon', 'Glasgow'], ['Ayr', 'Troon', 'Glasgow'], ['Ayr', 'Troon', 'Paisley', 'Glasgow']..........etc] 

これは簡単ではありません!誰も助けることができますか?

+0

が、それはエアとトゥルーンの間プレストウィックをしてはならないことを計算する必要はありません、すべての組み合わせがペアに現れると仮定すると? –

+0

ああ、コメディアン!はい、このバスルートは数駅ありません! – Handloomweaver

答えて

7

中間ステップ

>>> from itertools import combinations 
>>> route = ['Ayr', 'Newton', 'Troon', 'Paisley', 'Glasgow'] 
>>> [(route[0],)+x+(route[-1],) for i in range(len(route)-1) for x in combinations(route[1:-1],i)] 
[('Ayr', 'Glasgow'), ('Ayr', 'Newton', 'Glasgow'), ('Ayr', 'Troon', 'Glasgow'), ('Ayr', 'Paisley', 'Glasgow'), ('Ayr', 'Newton', 'Troon', 'Glasgow'), ('Ayr', 'Newton', 'Paisley', 'Glasgow'), ('Ayr', 'Troon', 'Paisley', 'Glasgow'), ('Ayr', 'Newton', 'Troon', 'Paisley', 'Glasgow')] 
+0

それは素晴らしいです!どうもありがとうございます。中間段階を失うこともあまりにも多いです – Handloomweaver

+0

実際、私は時々中間段階が必要であることを認識しました。ペアから最終結果を生成するにはどうすればよいですか? – Handloomweaver

+0

@Handloomweaverは、すべての可能な組み合わせがペアにあるわけではないという意味ですか? –

関連する問題