2016-04-05 22 views
1

我想写一段代码,只有当列表(guess3)的所有元素都> 0时才能找到最小变量(RSS3)。我已经完成了:如果条件没有按预期返回

if RSS3_min < RSS3_fin and (all(guess3[q]) > 0 for q in range(len(guess3))): 
    RSS3_fin = RSS3_min 
    guess3_fin = guess3 
    print i,j,k, 'RSS3 = ',RSS3_fin, 'guess3 = ', guess3 

的输出如下所示:

0 1 2 RSS3 = 152.470584348 guess3 = [ 1.03993316e-18 -4.21309327e-21 3.91958921e-23] 
0 1 3 RSS3 = 138.828305634 guess3 = [ -9.72979812e-18 2.45455199e-20 9.91015993e-17] 
0 2 6 RSS3 = 110.971076196 guess3 = [ 2.51690683e-18 6.50243486e-23 -1.64840584e-18] 
0 2 12 RSS3 = 110.167564411 guess3 = [ 1.67526232e-18 6.93897310e-23 -9.25020238e-19] 

这意味着我if条件的第二部分是不满意。我错在哪里?请考虑我对python真的很陌生,所以请保持简单......谢谢!

+0

什么关于你的输出提示你,第二块“if”不满意?你期望得到什么输出? –

+0

'all(guess3 [q])> 0'不会做你的想法,只有当你在任何'guess3 [q])中没有错误的值时才会是真的',然后只是因为'True> 0' –

+0

提示:'guess3中的g(all(g)> 0')和'guess3中的g'都是(g> 0)? –

回答

2

的右括号是不是在正确的地方,解决它:

if RSS3_min < RSS3_fin and all(guess3[q] > 0 for q in range(len(guess3))): 

需要注意的是,因为这是Python中,你可以遍历列表中的直接项目:

if RSS3_min < RSS3_fin and all(item > 0 for item in guess3): 
+0

或者只是'全部(在猜测q中q> 0)'' –