Linia kodu, o którą pytasz, to list comprehension, aby utworzyć listę i przypisać dane zebrane na tej liście do self.cells
. Jest to odpowiednik
self.cells = []
for i in xrange(region.cellsPerCol):
self.cells.append(Cell(self, i))
Wyjaśnienie:
Aby jak najlepiej wyjaśnić jak to działa, kilka prostych przykładów może być pouczające pomagając zrozumieć kod trzeba. Jeśli będziesz kontynuował pracę z kodem Pythona, ponownie zobaczysz spisywanie słów i możesz go użyć samodzielnie.
Uwaga, w poniższym przykładzie, oba segmenty kodu są równoważne w które tworzą list
wartości przechowywane w liście myList
.
Na przykład:
myList = []
for i in range(10):
myList.append(i)
jest równoważna
myList = [i for i in range(10)]
listowe listy mogą być też bardziej skomplikowane, więc na przykład jeśli miał jakiś warunek, że określona, jeśli wartości powinny przejść do listy, którą może również wyrazić to ze zrozumieniem listy.
Ten przykład tylko zbiera parzyste wartości w liście:
myList = []
for i in range(10):
if i%2 == 0: # could be written as "if not i%2" more tersely
myList.append(i)
i równoważnej listowego:
myList = [i for i in range(10) if i%2 == 0]
Dwa końcowe Uwagi:
- można mieć „zagnieżdżone "wymieniają obawy, ale szybko stają się trudne do zrozumienia :)
- Zrozumienie listy będzie działało szybciej niż odpowiednik pętli for i dlatego często jest ulubionym przez zwykłych programistów Pythona, którzy są zaniepokojeni wydajnością.
OK, ostatni przykład pokazujący, że można również zastosować funkcje do elementów, które są iteracyjne na liście.Wykorzystuje float() przekonwertować listy ciągów do pływaka wartości:
data = ['3', '7.4', '8.2']
new_data = [float(n) for n in data]
otrzymujemy:
new_data
[3.0, 7.4, 8.2]
nazywany jest „lista ze zrozumieniem” –