Nehmen wir an, ich möchte eine Liste von ints
mit Python, die aus den Würfeln der Zahlen 1 bis 10 besteht nur, wenn der Würfel ist gleichmäßig durch vier teilbar.Ist das Listenverständnis pythonisch genug?
Ich schrieb diese Arbeitsleitung:
cube4 = [x ** 3 for x in range(1, 11) if (x ** 3) % 4 == 0]
Mein Rindfleisch mit dieser Codezeile ist, dass er zweimal den Würfel von X zu berechnen. Gibt es mehr Python Möglichkeit, diese Zeile zu schreiben? Oder ist das so gut, wie es in einem Listenverständnis kommt?
Bearbeiten - Meine Frage soll fokussiert werden, wie Fremd Berechnung zu vermeiden, die Eigenschaften und Nuancen von Python, während immer noch Code übersichtlich und lesbar zu halten. Obwohl diese Lösung wahrscheinlich erreicht worden wäre, andere Fragen zu betrachten, wollte ich sicher sein, dass ich die beste Antwort auf diese Frage wusste, nicht nur eine Lösung, die funktioniert.
Wie es ist, ist es sehr pythonisch und ich würde mir keine Sorgen machen. Sie haben keine Ahnung, was die Laufzeit tut, vielleicht optimiert sie schon den x^3 Begriff. Oder eine zukünftige Version von Python könnte. Oder eine alternative Laufzeit, wie PyPy es könnte. Es ist am besten, den Idiomen der Sprache zu folgen und die Sprachdesigner sich über diese Dinge Gedanken machen zu lassen, es sei denn, Sie haben Ihren Code profiliert und wissen, dass das Listenverständnis Ihr Flaschenhals ist. Wenn Sie zu diesem Punkt kommen, müssen Sie sich darüber Gedanken machen, was Ihre Laufzeit tut. – LiavK