yılında çok boyutlu bir dizi aracılığıyla böyle Python çok boyutlu bir dizi oluşturduk. Bunu nasıl başarabilirim?yineleme Python
cevap
Numpy kullanıyorsunuz. Numpy ile sadece yapabilirsiniz:
şuna ne dersinizfor cell in self.cells.flat:
do_somethin(cell)
Sadece bir boyutun üzerinde, ardından diğerinde yineleyin. Sadece iki boyutlarıyla, bir list comprehension veya jeneratör ifadesini kullanarak tek döngü bu aşağı sıkıştırabilir, ama bu çok ölçeklenebilir veya okunabilir değil Tabii
for row in self.cells:
for cell in row:
do_something(cell)
:
for cell in (cell for row in self.cells for cell in row):
do_something(cell)
Eğer gerekiyorsa Bunu birden çok boyuta ölçeklendirin ve gerçekten bir düz liste isteyin, write a flatten
function.
:
import itertools
for cell in itertools.chain(*self.cells):
cell.drawCell(surface, posx, posy)
'ile bunu yapmanın daha etkili bir yolu var. itertools.chain.from_iterable (self.cells) ' – jfs
Eğer arkadaşın (Numpy olarak) daha sonra ndenumerate bireysel hücrelerin değerlerini değiştirmek gerekiyorsa. Yapmasanız bile muhtemelen hala var!
for index,value in ndenumerate(self.cells):
do_something(value)
self.cells[index] = new_value
her bir öğenin dizinini yanı sıra komutunu numaralandırmak kullanarak elemanı kendisi alabilirsiniz:
i
for (i,row) in enumerate(cells):
for (j,value) in enumerate(row):
print i,j,value
,
j
elementi ve
value
satır ve sütun dizin içermesi eleman kendisi olduğu .
kimse Numpy olmadan formu keyfi fazla boyut çalışacak bir cevabı var, bu yüzden buraya çok iyi bir hata kontrol yok
def iterThrough(lists):
if not hasattr(lists[0], '__iter__'):
for val in lists:
yield val
else:
for l in lists:
for val in iterThrough(l):
yield val
for val in iterThrough(
[[[111,112,113],[121,122,123],[131,132,133]],
[[211,212,213],[221,222,223],[231,232,233]],
[[311,312,313],[321,322,323],[331,332,333]]]):
print(val)
# 111
# 112
# 113
# 121
# ..
Bu kullandım bir özyinelemeli çözüm koyacağım ama
- 1. python yineleme
- 2. Python listesi, yineleme
- 3. Python MySQLdb tablo üzerinden yineleme
- 4. Python Scrapy ile siteler arasında yineleme
- 5. Python: Maksimum yineleme derinliği kopyalama işlemini
- 6. Python: "Nonetype 'yinelenebilir değil" yineleme olmadan
- 7. Yineleme
- 8. yineleme
- 9. yineleme
- 10. yineleme/
- 11. jquery alt öğelerdeki yineleme yineleme
- 12. AngularJS Yineleme yineleme kapsamı nesnesi
- 13. javascript Üzerinden Yineleme Yineleme ng-yineleme kullanılarak eşleştirilmesi
- 14. Parallel.ForEn fazla sayıda öğeyi koleksiyonda yineleme Yineleme
- 15. Bir python öğesinin öğeleri üzerinde yineleme nasıl yapılır
- 16. Yineleme sırasında gerekli tüm bağlantılar alınamıyor - Selenium Python
- 17. Nokta (yineleme)
- 18. yineleme arayüzleri
- 19. yineleme kez
- 20. Java Yineleme
- 21. LaTeX'te yineleme
- 22. Python
- 23. MySQL tablasını yineleme ve güncelleştirme
- 24. Yineleme engellemesinin çoğunu neden yineleme yerine engellemeye devam et? En yineleme blokları için
- 25. Guava yineleme ve liste nesnesi içinde bir liste üzerinde yineleme
- 26. Bir dizgeyi ters çevirin: javascript'te yineleme vs yineleme
- 27. AngularJS - Her ng yineleme yineleme için rasgele değer nasıl oluşturulur?
- 28. Üzerinde yineleme ve yeni elemanların üzerinde yineleme sırasında liste değiştirme
- 29. Django model yineleme alanları
- 30. Yineleme kullanarak Palindrome işlevi
Sanırım şimdi ['numpy.nditer()'] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.nditer.html) – tuned