2012-07-18 60 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