Diciamo che voglio creare un elenco di ints
usando Python che consiste dei cubi dei numeri da 1 a 10 solo se il cubo è equamente divisibile per quattro ().Questa comprensione della lista è abbastanza pitone?
Ho scritto questa linea di lavoro:
cube4 = [x ** 3 for x in range(1, 11) if (x ** 3) % 4 == 0]
mio manzo con questa riga di codice è che è il calcolo del cubo x due volte. C'è più pythonic modo di scrivere questa riga? O è buono come entrerà nella comprensione di una lista?
Edit - La mia domanda è destinata ad essere concentrati come evitare calcoli estranei utilizzando le funzionalità e le sfumature di Python, pur mantenendo il codice conciso e leggibile. Sebbene questa soluzione avrebbe potuto probabilmente essere raggiunta guardando altre domande, volevo essere sicuro di conoscere la migliore risposta a questa domanda, non solo una soluzione che funzioni.
Così com'è, è molto pitonico e non me ne preoccuperei. Non hai idea di cosa stia facendo il runtime, potrebbe benissimo essere l'ottimizzazione del termine x^3 già. Oppure, una versione futura di Python potrebbe. O un tempo di esecuzione alternativo, come potrebbe essere PyPy. È meglio seguire gli idiomi della lingua e lasciare che i progettisti linguistici si preoccupino di questo genere di cose, a meno che tu non abbia profilato il tuo codice e * sappia * che quella comprensione delle liste è il tuo collo di bottiglia. Se arrivi a quel punto, devi preoccuparti di cosa sta facendo il tuo runtime. – LiavK