質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

3921閲覧

二次元リストのそれぞれの要素の組み合わせを抽出

hirochem

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/04/27 13:56

編集2021/04/27 13:57

二次元リストのそれぞれの要素数が異なり、その要素を組み合わせた新たなリストを作りたいです。
具体的なコードを以下に示します。

python

1A = [[1], [2, 3, 4], [5]]

という二次元リストがあるときに新しく

python

1lst = [[1,2,5], [1,3,5], [1,4,5]]

というリストを作成したいです。
それぞれの要素数は任意な値です。

二次元リストではなく、複数のリストならばitertools.product()で生成可能だと思うのですが、二次元リストの各要素のリストが組み合わせの対象の場合、どのように対応すれば良いのでしょうか?

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Python

1from itertools import product 2 3A = [[1], [2, 3, 4], [5]] 4lst = [*map(list, product(*A))] 5print(lst) # [[1, 2, 5], [1, 3, 5], [1, 4, 5]]

投稿2021/04/28 22:04

lehshell

総合スコア1147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirochem

2021/04/30 12:04

ありがとうございます!そういう書き方もできるんですね。 知りませんでした
guest

0

ベストアンサー

二次元リストも複数のリストも本質的には(展開(アンパック)すれば)同じで、productで生成できます。

Python

1from itertools import product 2 3A = [[1], [2, 3, 4], [5]] 4lst = [list(v) for v in product(*A)] 5print(lst) # [[1, 2, 5], [1, 3, 5], [1, 4, 5]]

投稿2021/04/27 14:08

can110

総合スコア38278

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirochem

2021/04/28 12:06

アンパックという言葉を初めて知りました。勉強になります。 一つ質問なのですが、「import itertools」でproductを使う場合と、「from itertools import product」でproductを使う場合の違いはどういったものでしょうか?
can110

2021/04/28 12:10

記法の違い程度でとくに違いはありません。
hirochem

2021/04/28 12:14

早速ありがとうございます! 助かりました。
guest

0

py

1import itertools 2A = [[1], [2, 3, 4], [5]] 3 4itr = itertools.product(*A) 5lst = [list(i) for i in itr]

でどうでしょうか?

投稿2021/04/27 14:06

coolwind0202

総合スコア708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirochem

2021/04/28 12:05

数時間悩み続けたので非常に助かります! まだまだ自分の力不足です。 map関数を使わなくても内胞表記すればタプルではなく、リストとして返せるんですね。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問