サイズが約10,000のいくつかの大きなリストがいくつかあります。Python:リストのループ速度を向上させる
など。私のリストは以下のように見えるが、私の本当の人生リストはL1、L2、L3で約10,000の要素それぞれがあります。これらのリストは、1つのマッピングの一つです
L1 = ['A1','B1','A1','B1','A1','C1']
L2 = ['C1','C2','C3','C1','C2','C1']
L3 = [ 1, 2, 3, 1, 2, 2]
を。
L1、L2、L3の要素の組み合わせに基づいて新しいリストを作成する必要があります。
私が作成しようとしています新たなリストは、次のコードをしています
TypeDefn = ['Type1' if (x == 'A1' and y>=1 and y<=3)
else 'Type1' if (z == 'C1' and y>=1 and y<=3)
else 'Type2' if (x== 'A2' and y>=0 and y<7)
else 'Type3' for x in L1 for y in L3 for z in L2]
明らかに私の場合コードの10000^3回を反復処理する必要があり、それは、最適なソリューションではありません。
どのような方法がありますか?
編集: 質問に答えることが難しい場合、なぜ人々はそれをダウン投票するのですか? Downvoteは私が実際にこの質問にdownvoteのポイントを見逃しているコメントの原因で義務付けられるべきです。この世界のすべての問題が決定論的な解決策を持っているわけではありません。
@Sniggerfardimungusコメントは必ずしも私の問題を解決しませんが、それは私に洞察を与えます。
私はしばらく見てきた最も読めないコードです。なぜ、最初のケースで 'またはz == 'C1'だけでなく、2番目のケースを削除するのでしょうか?また、 '1 <= y <= 3'はあなたの' y> = 1とy <= 3'と同じです –
申し訳ありませんが、これをイラストとして書いたのですが、もっと多くの変数とその相互作用も非常に複雑です。しかし、私が尋ねるポイントは、3つ以上のリストを効率的に反復処理して型定義を作成する方法です。 – Zanam
まず最初に、結果に適したフォームを選択する必要があります。各リストに10,000要素がある場合、 'TypeDefn'は10 ** 12、つまり1,000,000,000,000要素になります。それは1つの三柱です。そう、いいえ。これはアルゴリズムの問題ではなく、仕様の問題です。定義されているように 'TypeDefn'を持つことはできません。代わりに何を作りたいですか?どのように使用するのか自分自身に尋ねてください。 –