2014-08-27 89 views
0

我需要正確的字段填充一個表的不同行中,我使用的陣列當前填充一個柱,其結果是通過分析包含數據包的信息文件(網絡捕獲聚集)。Python 2.7版,填充表與陣列

self.payloads []是用於有效載荷數據的一個陣列。

self.frames []是另一個用於幀數據。

來填充一列,我目前使用:

i=0 
for data in self.payloads: 
       self.ui.tableWidgetData.insertRow(i) 
       self.ui.tableWidgetData.setItem(i, 5, QtGui.QTableWidgetItem(data)) 
       i+=1 

我怎麼會用5個陣列中填充表?

+0

這與數據包有什麼關係?只要將隨機標籤附加到一個問題上,不會給你更多的答案,它會讓你從一個與你的問題無關的專家的人那裏得到低估,而不是你實際詢問的專家。 – abarnert 2014-08-27 11:31:23

+0

同時,它不是從你的問題很清楚,但我覺得是你可能會尋找['zip'(https://docs.python.org/3/library/functions.html#zip)。這將允許您在同一個循環中遍歷所有5個數組。 – abarnert 2014-08-27 11:32:49

+0

對不起,我以爲我提到了我正在解析的東西 – MPythonLearner 2014-08-27 11:35:21

回答

1

我想你要尋找的是zip

i=0 
for payload, frame, otherthing in zip(self.payloads, self.frames, self.otherthings): 
    self.ui.tableWidgetData.insertRow(i) 
     self.ui.tableWidgetData.setItem(i, 3, QtGui.QTableWidgetItem(frame)) 
     self.ui.tableWidgetData.setItem(i, 5, QtGui.QTableWidgetItem(payload)) 
     self.ui.tableWidgetData.setItem(i, 6, QtGui.QTableWidgetItem(other thing)) 
     i+=1 

zip需要一堆獨立的iterables的(如您的列表),並一起拉鍊成一個單一的迭代,每個元素來自每個輸入的值。這就是你如何在鎖步中迭代一堆單獨的迭代器。例如:

>>> a = [0, 1, 2] 
>>> b = [3, 4, 5] 
>>> for i, j in zip(a, b): 
...  print i, j 
0 3 
1 4 
2 5 

作爲一個側面說明,您無需手動維護計數就像你與i做。請參閱enumerate功能:

​​
0

map是一個選項。

a = [0, 1, 2, 3] 

b = [0, 1, 2, 3] 

for i,j in map(None,a,b): 
    print i,j 
+0

雖然你可以(ab)使用map來做這件事,但當你想要做的事情是將多個迭代件一起壓縮時,你應該使用'zip'。實際上並沒有記錄,'map'可以將'None'作爲一個函數。 – abarnert 2014-08-27 11:53:48

+0

謝謝,zip工程,可能更好。 – MPythonLearner 2014-08-27 11:56:19

+0

@abarnert - 文檔確實將None描述爲map和由此產生的影響的函數參數。 – wwii 2014-08-27 12:22:32