この時点まで、Pythonでは、一度に1つの要素を含めることを指定するリスト内包表記しか見たことがありません。たとえば、それらはすべて次の形式になっています
[f(x) for x in <iterable>]
一度に複数の要素を指定する方法はありますか?例えば、
[f(x), g(x) for x in <iterable>]
ある数xのすべての除数を計算するリスト内包表記を作成したいので質問していますが、これを可能な限り効率的に実行したいと思います。今、私は以下を使用しています、
[y for y in range(1,x+1) if x%y == 0]
でもこういうことをしたいのですが
[y, x/y for y in range(1, sqrt(x)+1) if x%y == 0]
これはより効率的であるため。ところで、私にはこれを行う実際的な理由はありません。誰かが私に言ったのは単に挑戦的な問題であり、目標は可能な限り最小で最も効率的なリスト内包表記でそれを行うことです。
前もって感謝します。
編集:わかりました、タプルを使用する必要があるようです。私はそれを避けようとしていましたが、リストをフラット化するために別の関数を作成する必要があるため、ソリューションが長くなります。
編集2:誰かがこの質問に出くわした場合に備えて、元の質問でやりたかったことに対する答えは次のとおりです。
[y for x in <iterable> for y in f(x), g(x)]
リスト内包表記のネストされたforループを使用して、ジョブを実行します。