2016-12-13 100 views
2

我試圖在兩列中打印我的數據。通過兩個列表循環打印以獲取Python中的兩列

for data in summary_data: 
    print 'Name      ', data[0] 
    print 'Calculations1', data[0], ': ', data[1] 
    print 'Calculations2', data[0], ': ', data[2] 
    print 'Calculations3', data[0], ': ', data[3] 
    print '-------------------------------------------' 

其中規定:

Sample name   105689_S2 
Calculations1 :  9477442 
Calculations2 :  488850 
Calculations3 :  563029 
------------------------------------------- 
Sample name   WT101589_S1 
Calculations1 :  9849916 
Calculations2 :  507676 
Calculations3 :  584819 
------------------------------------------- 

,我想我的輸出像被格式化,我有

print(summary_data) 
[('105689_S2', 9477442, 488850, 563029), ('WT101589_S1', 9849916, 507676, 584819)] 

我能夠通過一個循環來打印我的數據的數據:

Sample name   105689_S2 WT101589_S1 
Calculations1 :  9477442 9849916 
Calculations2 :  488850 507676 
Calculations3 :  563029 584819 
------------------------------------------- 

我試過

zipped = ([list(x) for x in zip(*summary_data)]) 
for data in zipped: 
    print data[0] 

其中給出:

105689_S2 
909172 
31908 
31360 

但現在我失去了我如何能得到兩列的printed..Could有人能幫助我嗎?

+0

問題是,我需要在'zip'聲明超過1個值,所有的數據存儲在一個變量中。 –

回答

3

您可以使用zip()這樣的:

summary_data = [('105689_S2', 9477442, 488850, 563029), ('WT101589_S1', 9849916, 507676, 584819)] 
titles = ['Sample name:', 'Calculations1:', 'Calculations2:', 'Calculations3:'] 

for item in zip(titles, *summary_data): 
    print '{}\t{}\t{}'.format(*item) 

輸出:

Sample name:  105689_S2  WT101589_S1 
Calculations1: 9477442 9849916 
Calculations2: 488850 507676 
Calculations3: 563029 584819 
+0

謝謝!我錯過了拉鍊的第二個參數.. –

+0

嗨,我有一個問題。當我嘗試加載已定義的數據'summary_data'時,出現錯誤:'print'{} \ t {} \ t {}'。格式(* item) IndexError:元組索引超出範圍' 。你知道我該如何解決這個問題嗎? –

+0

讓你的'summary_data'中的所有元組具有與上面的相同長度(這是3) – ettanany