2

この投稿の読者の皆様へ

Python で効率的に 2 つのリストの和集合のシーケンスを形成する方法を知っていますか? 次の 2 つのリストがあるとします。

 list_a = [['a','b'],['a','c'],['b','c']]
 list_b = ['h','i']

そして私は計算したい:

 new_list = [['a','b','h'],['a','b','i'],['a','c','h'],['a','c','i'],['b','c','h'],
             ['b','c','i']].

これまで、次のループを使用しています。

        new_list = [r+[j] for j in list_b for r in list_a]

しかし、私はこれが醜いと思います。私は2つのループが好きではありません。代わりに関数を使用することを好みます。

目的のタスクを達成するための別のアイデアはありますか? (とりわけ、Pythonの提案で一連のリストのデカルト積を取得しようとしましたが、役に立ちませんでした。)

どんな提案にも感謝します!

よろしく、 ファビアン

4

2 に答える 2

0

それはどのように見えますか?

>>> new_list = []
>>> for item in itertools.product(list_a, list_b):
...   new_list.append([x for li in list(item) for x in li])
... 
>>> new_list
[['a', 'b', 'h'], ['a', 'b', 'i'], ['a', 'c', 'h'], ['a', 'c', 'i'], ['b', 'c', 'h'], ['b', 'c', 'i']]
>>> 
于 2014-08-12T19:12:52.977 に答える