|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Sep 2011
Messaggi: 12
|
[PYTHON] ottimizzare ciclo e controlli
ho una parte di codice che controlla la presenza di valori in degli insiemi e se non sono presenti li aggiunge, altrimenti prende tutta la riga e la inserisce in una lista:
Codice:
x, y, z, k, j, h = set(),set(),set(), set(), set(), set()
for i in righe:
if i[0] not in x and i[1] not in y and i[2] not in z and i[3] not in k\
and i[4] not in j and i[5] not in h:
i.add(i[0])
y.add(i[1])
z.add(i[2])
k.add(i[3])
j.add(i[4])
h.add(i[5])
else:
lista.append(i)
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Vedi: LOAD_FAST, per andare veloci su CPython. Per il resto: Codice:
def f(lista, righe):
listappend = lista.append
x, y, z, k, j, h = (set(), ) * 6
xadd = x.add
yadd = y.add
zadd = z.add
kadd = k.add
jadd = j.add
hadd = h.add
for i in righe:
i0, i1, i2, i3, i4, i5 = i
if i0 not in x and i1 not in y and i2 not in z and i3 not in k\
and i4 not in j and i5 not in h:
iadd(i0)
yadd(i1)
zadd(i2)
kadd(i3)
jadd(i4)
hadd(i5)
else:
listaappend(i)
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Intanto vedo che c'è un errore. Dove c'è iadd devi lasciare il vecchio i.add.
Poi la notte (soprattutto il sonno ristoratore) porta consiglio. Se l'obiettivo è "raccogliere in una (anche nuova) lista tutti gli elementi di una lista che soddisfino una certa condizione" si fa subito e in maniera molto più elegante con una list comprehension: Codice:
def f(Righe): ElementiTrovati = set() return [Elemento for Elemento in Righe if Elemento not in ElementiTrovati] Codice:
Lista = set(Righe)
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:10.




















