Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Elementi > k in una lista

B
Babby740 (1240 points)
24 35 39
in Programmare in Python by (1.2k points)
Voglio decrementare tutti gli elementi > k contenuti in una lista.
Esiste un modo più veloce di: ciclare tutta la lista e tramite un if controllare se quell'elemento è > k?
617 views

3 Answers

E
Edward (25950 points)
4 4 172
by (26.0k points)
Credo sia necessario che la lista sia ordinata per evitare gli if, ed ovviamente andrebbe bene solo per il primo decremento (poi andrebbe riordinata ma a questo punto si fa prima con gli if).
B
Babby740 (1240 points)
24 35 39
by (1.2k points)
Chiedevo se si potesse fare senza ciclare
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
edited by
Utilizzando una lista ordinata in modo decrescente e decrementando ogni elemento fino a che è > k potresti ridurre il numero di confronti effettuati e quindi migliorare la velocità d'esecuzione in alcuni casi, però ovviamente devi considerare il costo di ordinare la lista (senza contare che l'ordine della lista originaria potrebbe essere importante e quindi non "riordinabile") che perciò lo rende meno efficiente nel caso non lo sia già.

Non mi vengono in mente alternative, ma magari esiste qualche caratteristica/funzione di Python che ti permette di ottimizzare i tempi.
plm (18850 points)
13 15 118
by (18.9k points)
Credo che se sei vincolato ad una lista, l'unico modo per poter controllare gli elementi è attraverso un ciclo e qualcos'altro, quindi non penso