La riga di codice che si sta chiedendo utilizza list comprehension per creare un elenco e assegnare i dati raccolti in questo elenco a self.cells
. È equivalente a
self.cells = []
for i in xrange(region.cellsPerCol):
self.cells.append(Cell(self, i))
Spiegazione:
Per spiegare meglio come questo funziona, alcuni semplici esempi potrebbero essere istruttivo per aiutare a capire il codice che avete. Se continuerai a lavorare con il codice Python, troverai di nuovo la comprensione degli elenchi e potresti volerlo utilizzare da solo.
nota, nell'esempio di seguito, entrambi i segmenti di codice sono equivalenti in quanto creano una list
di valori memorizzati nella lista myList
.
Per esempio:
myList = []
for i in range(10):
myList.append(i)
è equivalente a
myList = [i for i in range(10)]
di lista può essere più complessa troppo, così per esempio se si ha qualche condizione che ha determinato se i valori devono andare in una lista che si potrebbe anche esprimere questo con la comprensione delle liste.
Questo esempio solo raccoglie i valori pari nei nell'elenco:
myList = []
for i in range(10):
if i%2 == 0: # could be written as "if not i%2" more tersely
myList.append(i)
e l'elenco equivalente di comprensione:
myList = [i for i in range(10) if i%2 == 0]
Due note finali:
- si può avere "annidati "elencare le preoccupazioni, ma diventano rapidamente difficili da comprendere :)
- La comprensione degli elenchi verrà eseguita più velocemente del ciclo for corrispondente e, pertanto, è spesso un preferito dai normali programmatori Python che si preoccupano dell'efficienza.
Ok, un ultimo esempio che mostra che è possibile applicare le funzioni anche agli elementi su cui si sta iterando nell'elenco.Questo utilizza float() per convertire una lista di stringhe di galleggiare valori:
data = ['3', '7.4', '8.2']
new_data = [float(n) for n in data]
dà:
new_data
[3.0, 7.4, 8.2]
è chiamato un 'di lista' –