私が実行したいとのforループを入れ子になりましたか?私のようなものを探しています :フラット化は、従属変数
for i, j in itertools.product(list_a, list_b[i])
私はスピードと読みやすさのためにそれを行うにしたいです。
your_list = [(i, j) for i in list_a for j in list_b[i]]
その後:何もリスト内包を打つ -
私が実行したいとのforループを入れ子になりましたか?私のようなものを探しています :フラット化は、従属変数
for i, j in itertools.product(list_a, list_b[i])
私はスピードと読みやすさのためにそれを行うにしたいです。
your_list = [(i, j) for i in list_a for j in list_b[i]]
その後:何もリスト内包を打つ -
itertools
あなたは、ほとんどの場合、スピード(しかし、あなたに安定性を与え、可能な限りそれを使用する時間を節約できます)読みやすさと速度の両方のためとして与えることはありませんあなたが望むならそれを印刷することができます:)
私はそれが速度や可読性を向上させるどのような方法でこれを平らにすることは可能だとは思わない。ネストされたアプローチは、これを行うための自然で最も効率的な方法であるように思えます。 list_b [i]]の 'jに対してlist_aのiに対して' [call_some_function(i、j)]というように、リストの理解度やジェネレータの表現として書くことで、1つの物理的な行にすべて書くことができますが、それは基本的にネストされていますforループ。 – jez
でも、最も速く、リストの理解を書いて、それを関数で反復したり、何かを生成しそれを反復する関数を作成したりするのはどうですか? – Y0da
リストが必要な場合は、リストの理解度を使用してください。ジェネレータ式を使用するには、ジェネレータ式を使用します: 'list_aのlist_aのiのcall_some_function(i、j)for list_b [i]'ジェネレータ式を使用します。リストをマテリアライズするメモリを浪費することなく、 do_some_more_stuff(物) ' –