解決済み

pythonで組合せ、順列

  • 困ってます
  • 質問No.6961316
  • 閲覧数460
  • ありがとう数3
  • 気になる数0
  • 回答数1
  • コメント数0

pythonで、a=[4,5,6],b=[7,8],c=[9,10],x=a+b+cというリストがあり、
aの順列から1つ(a1)、bの順列から1つ(b1)、cの順列から1つ(c1)を選択し、
それらをxx=a1+b1+c1とするすべてのxxを求めるためにはどうすればいいですか?
xxの例 [[6,4,5],[7,8],[10,9]]

質問者が選んだベストアンサー

  • 回答No.1

ベストアンサー率 62% (800/1280)

ほい。
組み合わせをすべて列挙するのと同じ。
個々の要素が順列になるだけ。

>python
Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import itertools
>>> prod=itertools.product
>>> perm=itertools.permutations
>>> list(prod(perm([4,5,6]),perm([7,8]),perm([9,10])))
[((4, 5, 6), (7, 8), (9, 10)), ((4, 5, 6), (7, 8), (10, 9)), ((4, 5, 6), (8, 7), (9, 10)), ((4, 5, 6), (8, 7), (10, 9)), ((4, 6, 5), (7, 8), (9, 10)), ((4, 6, 5), (7, 8), (10, 9)), ((4, 6, 5), (8, 7), (9, 10)), ((4, 6, 5), (8, 7), (10, 9)), ((5, 4, 6), (7, 8), (9, 10)), ((5, 4, 6), (7, 8), (10, 9)), ((5, 4, 6), (8, 7), (9, 10)), ((5, 4, 6), (8, 7), (10, 9)), ((5, 6, 4), (7, 8), (9, 10)), ((5, 6, 4), (7, 8), (10, 9)), ((5, 6, 4), (8, 7), (9, 10)), ((5, 6, 4), (8, 7), (10, 9)), ((6, 4, 5), (7, 8), (9, 10)), ((6, 4, 5), (7, 8), (10, 9)), ((6, 4, 5), (8, 7), (9, 10)), ((6, 4, 5), (8, 7), (10, 9)), ((6, 5, 4), (7, 8), (9, 10)), ((6, 5, 4), (7, 8), (10, 9)), ((6, 5, 4), (8, 7), (9, 10)), ((6, 5, 4), (8, 7), (10, 9))]
お礼コメント
noname#139450

ありがとうございます。
投稿日時 - 2011-08-26 22:36:47
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ