2015-05-16 244 views
0

我想找到如何使用literal_eval蟒蛇

print ((max(sum(literal_eval(sub)) for sub in row))) 

获得最大的长度。这给了我最大但如何获得最大的一笔在蟒蛇的长度找到长度?

我的输入是第一

[0.0],"[0.0, 0.0]","[1.0, 1.0,1.0]","[1.0, 1.0, 1.0, 1.0]","[0.0, 0.0, 0.0]","[0.0, 0.0]",[0.0] 

[0.0],"[0.0, 0.0]","[0.0, 0.0, 0.0]","[1.0, 1.0, 1.0, 0.0]","[0.0, 0.0, 0.0]","[1.0, 1.0]",[1.0] 

通过最大在找到最大像在上面的例子中我得到 (4) (2) 现在我想找到最大总和的长度是4在这种情况下

+0

'max()'返回一个整数。你的意思是像“len(str(your_max_value)”)? – IanAuld

+0

你想从'some_three_digit_number_like_782'返回'3'吗?或者你是否想要获得产生最高总和的'sub'的长度? –

+1

@lanAuId'max'不返回int值。它返回的值可以是一个对象。例如'max([1],[2,3])'会返回'[2,3]' –

回答

2

如果你希望你的列表的最大长度,你可以使用带有literal_eval列表推导得到的目录列表,然后使用maxsum作为其键搞定,最大sum列表,然后使用len通用电气t长度:

>>> s=[0.0],"[0.0, 0.0]","[0.0, 0.0, 0.0]","[1.0, 1.0, 1.0, 1.0]","[0.0, 0.0, 0.0]","[0.0, 0.0]",[0.0] 
>>> len(max([ast.literal_eval(i) if isinstance(i,str) else i for i in s],key=sum)) 
4 
+0

这段代码给我只有最大长度我想找到最大列表总和@卡斯拉 – abd

+0

@abd对不起,我不明白你能更清楚地解释你想要什么? – Kasramvd

+0

@ Kasra我有问题的代码给了我像[0,0],[1,1],[1,0,0,0]列表的最大总和,给我最大总和2我想找到长度最大,在这种情况下是2 – abd