2012-07-18 59 views
0

我對python有點新鮮。我今天開始。我的代碼看起來像這樣如下創建和訪問python列表中的列表

testcases=[ 
(([0.5,0.4,0.3],'HHTH'),[0.4166666666666667, 0.432, 0.42183098591549295, 0.43639398998330553]), 
(([0.14,0.32,0.42,0.81,0.21],'HHHTTTHHH'),[0.5255789473684211, 0.6512136991788505, 0.7295055220497553, 0.6187139453483192, 0.4823974597714815, 0.3895729901052968, 0.46081730193074644, 0.5444108434105802, 0.6297110187222278]), 
(([0.14,0.32,0.42,0.81,0.21],'TTTHHHHHH'),[0.2907741935483871, 0.25157009005730924, 0.23136284577678012, 0.2766575695593804, 0.3296000585271367, 0.38957299010529806, 0.4608173019307465, 0.5444108434105804, 0.6297110187222278]), 
(([0.12,0.45,0.23,0.99,0.35,0.36],'THHTHTTH'),[0.28514285714285714, 0.3378256513026052, 0.380956725493104, 0.3518717367468537, 0.37500429586037076, 0.36528605387582497, 0.3555106542906013, 0.37479179323540324]), 
(([0.03,0.32,0.59,0.53,0.55,0.42,0.65],'HHTHTTHTHHT'),[0.528705501618123, 0.5522060353798126, 0.5337142767315369, 0.5521920592821695, 0.5348391689038525, 0.5152373451083692, 0.535385450497415, 0.5168208803156963, 0.5357708613431963, 0.5510509656933194, 0.536055356823069])] 

print 'Inputs' 
print '======' 
for inputs,output in testcases: 
    print inputs[0] 

print 'Outputs' 
print '=======' 
for inputs,output in testcases: 
    print output[0] 

在上面的代碼給輸出如下

輸入

====== 
[0.5, 0.4, 0.3] 
[0.14, 0.32, 0.42, 0.81, 0.21] 
[0.14, 0.32, 0.42, 0.81, 0.21] 
[0.12, 0.45, 0.23, 0.99, 0.35, 0.36] 
[0.03, 0.32, 0.59, 0.53, 0.55, 0.42, 0.65] 
Outputs 
======= 
0.416666666667 
0.525578947368 
0.290774193548 
0.285142857143 
0.528705501618 

但我需要訪問測試用例列表中的每一行上面想獲得輸出如下代碼應該是什麼?

([0.5,0.4,0.3],'HHTH'),[0.4166666666666667, 0.432, 0.42183098591549295, 0.43639398998330553]) 
+1

這是怎麼([0.5,0.4,0.3], 'HHTH'), [0.4166666666666667,0.432,0.42183098591549295,0.43639398998330553]) 沒有給你一個語法錯誤? – 2012-07-18 09:32:44

+0

預期產量在哪裏? – tuxuday 2012-07-18 09:37:14

回答

0

這將打印什麼你後(如果那是你的意思)。

>>> for inputs,outputs in testcases: 
...  print '%r, %r' % (inputs, outputs) 

([0.5, 0.4, 0.3], 'HHTH'), [0.4166666666666667, 0.432, 0.42183098591549295, 0.43639398998330553] 
([0.14, 0.32, 0.42, 0.81, 0.21], 'HHHTTTHHH'), [0.5255789473684211, 0.6512136991788505, 0.7295055220497553, 0.6187139453483192, 0.4823974597714815, 0.3895729901052968, 0.46081730193074644, 0.5444108434105802, 0.6297110187222278] 
([0.14, 0.32, 0.42, 0.81, 0.21], 'TTTHHHHHH'), [0.2907741935483871, 0.25157009005730924, 0.23136284577678012, 0.2766575695593804, 0.3296000585271367, 0.38957299010529806, 0.4608173019307465, 0.5444108434105804, 0.6297110187222278] 
([0.12, 0.45, 0.23, 0.99, 0.35, 0.36], 'THHTHTTH'), [0.28514285714285714, 0.3378256513026052, 0.380956725493104, 0.3518717367468537, 0.37500429586037076, 0.36528605387582497, 0.3555106542906013, 0.37479179323540324] 
([0.03, 0.32, 0.59, 0.53, 0.55, 0.42, 0.65], 'HHTHTTHTHHT'), [0.528705501618123, 0.5522060353798126, 0.5337142767315369, 0.5521920592821695, 0.5348391689038525, 0.5152373451083692, 0.535385450497415, 0.5168208803156963, 0.5357708613431963, 0.5510509656933194, 0.536055356823069] 

如果你真的需要在該行的末尾有額外的)改變print語句:

print '%r, %r)' % (inputs, outputs) 
0

好像你需要一個嵌套循環。 e.g:

for inputs,output in testcases: 
    for output in outputs: 
     print output 
+0

輸入/輸出/輸出? – tuxuday 2012-07-18 09:38:21