for row, instrument in enumerate(instruments):
for col, value in enumerate(instrument):
self.table.SetValue(row, col, value)
回答
你在評論中提到這個循環是異步函數的一部分(就扭曲框架而言)。在這種情況下,您不想長時間阻塞:因此,所有行都是並行分配的。因此,所有行都是並行分配的。
注:
- 當心爲
i
和row
後期綁定。在這種情況下使用(lambda i=i, row=row: ...)()
。 task.coiterate()
使用全局對象,因此可能同時有多個表更新(它可能不是你想要的)。
這裏的@SilentGhost' answer(刪除):
self.table = instruments
因爲這是你彷彿是 做。
而由@評論[本休斯]我指的是:
我需要顯式地調用的SetValue(其 在PyGridTableBase)爲每個值 - 作爲該代碼被調用通過扭曲 遞延法 - 我的大腦是沒有太大的 擅長在一個整潔 方式循環/枚舉.....本 - 休斯
當我寫這個評論時,提問者沒有評論,他的問題和任何現有的答案都沒有。在這種情況下,我注意到SilentGhost刪除了他原來的答案:-)。如果提問者用任何相關信息更新他的問題,這將是一個非常好的主意。 – 2009-12-14 20:51:53
@John Machin:我已經包括刪除的答案和評論以供參考。 – jfs 2009-12-14 23:33:54
感謝您的澄清。所以,我真的需要一種替代方式來刪除郵件 - 一個「我希望我永遠不會寫這個郵件」的按鈕:-) - 除了像其他答案提到稀薄空氣這樣的問題之外,我注意到了一些情況,在其生命的早期時間,但後來被證明是不正確的,應該放棄其聲譽點,但文本離開那裏,因爲在其他答案中提到它。 – 2009-12-15 05:45:21
一種選擇是使用列表理解:如果
[self.table.setValue(row, col, value)
for row, instrument in enumerate(instruments)
for col, value in enumerate(instrument)]
不知道這是任何整潔或更Python ...但它是表達循環的另一種方式。
有人可能會爭辯說,列表理解更清晰,因爲「行動」部分(setValue)被放置在首位/頂部。而不是被埋在循環中。
編輯:
還有一種方法,使用輔助功能和發電機的表達:
def loop(iterator):
for item in iterator: pass
loop(self.table.setValue(row, col, value)
for row, instrument in enumerate(instruments)
for col, value in enumerate(instrument))
助手功能,可內置任何(),如果你肯定知道循環體在布爾上下文中永遠不會計算爲True(任何()會停止第一個True上的迭代)。
它的可讀性肯定較差。 – SilentGhost 2009-12-14 11:12:15
你是這麼認爲的嗎?這些陳述是完全一樣的,只是以不同的方式排列,並且封裝在[] – codeape 2009-12-14 11:13:58
這就是說,我從來沒有以這種方式使用過列表理解。沒有''variable = [...]'',只有''[...]''沒有使用返回值,感覺有點奇怪。 – codeape 2009-12-14 11:18:33
你在調用row
不是一行,它是一個行索引。 instrument
是一排。除此之外:
如果你唯一的工具是SetValue(row_index, column_index, value)
方法和方法做多幫助複製的instruments
費力的結構,instruments
收集是你的代碼描述,再沒有更好的有辦法。它已經比
#WARNING: BAD PRACTICE! DON'T USE THIS CODE!
for row_index in xrange(len(instruments)):
instrument = instruments[row_index]
for column_index in xrange(len(instrument)):
self.table.SetValue(row_index, column_index, instrument[column_index])
或其任何變異好得多。
否則self.table = instruments
的根本問題不是關於這個循環,你可能有興趣在import copy; self.table = copy.copy(instruments)
甚至(如SilentGhost曾建議)。
的根本問題是:
1)凡這是否instruments
結構從何而來,以及爲什麼你需要重組呢?
2)這是什麼self.table
結構上你打電話SetValue
?
3)您打算如何處理這個self.table
結構?
在您回答這些問題之前,您的示例Python代碼沒有可以評估的上下文。這只是代碼。
- 1. 更清潔的方式來投C#枚舉
- 2. 綁定枚舉屬性的最簡潔方法是什麼?
- 3. 什麼是「枚舉」?
- 4. 什麼應該是實現以下邏輯的pythonic方式?
- 5. Python 2:用字符串解釋做一個枚舉最優雅/ pythonic的方式是什麼?
- 6. 什麼是更簡單,更pyathonic方式來表達以下?
- 7. 什麼是更簡潔的方式來寫自我連接SQL
- 8. 什麼是[?]以上枚舉/類定義?
- 9. 什麼是「如果可能,做到這一點」的pythonic方式?
- 10. 什麼是更好的做法以下
- 11. 枚舉值是什麼?
- 12. 什麼是Java枚舉?
- 13. 枚舉是什麼意思?
- 14. 什麼枚舉
- 15. 什麼是打破這個字符串的更有效/更整潔的方式?
- 16. 什麼是一個整數到一個枚舉的最佳方式?
- 17. 這是做什麼更rubyesque的方式?
- 18. 爲什麼枚舉以這種方式表現?
- 19. Pythonic方式得到枚舉的最後一個索引值
- 20. 什麼是最pythonic這樣做?
- 21. 你會認爲什麼做法是「pythonic」?
- 22. 什麼是更清潔,更優雅的方式來初始化所有這些?
- 23. 什麼是一種慣用的方式來枚舉去字母表?
- 24. 爲什麼枚舉包括可枚舉
- 25. 應以什麼格式打印枚舉? %什麼?
- 26. Pythonic這樣做的方式?
- 27. 什麼是更加pythonic的方式來寫這個函數聲明
- 28. Keys枚舉中的 - (減/下劃線)和=(相等/加)鍵的枚舉是什麼?
- 29. pythonic和簡潔的方式來構建此列表?
- 30. 在枚舉中應該做些什麼以獲得「價值」?
看起來整潔和Python的足夠我;-) – pkit 2009-12-14 10:55:48
沒有連接你的問題,但變量儀器和儀器看起來太相似了,這使得調試更加困難。 http://www.joelonsoftware.com/articles/Wrong.html – 2009-12-14 11:13:45
你不喜歡什麼?它出什麼問題了?你認爲什麼樣的優化是可能的? – 2009-12-14 11:16:15