2015-05-16 240 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