簡體   English   中英

如果a ='4 * 6'為什么int(a)not = 24有什么辦法

[英]if a='4*6' why int(a) not = 24 is there any way to do it

我正在嘗試將列表的所有成員相乘

i = [6,7]

print(int(str(i).replace(',', '*').replace('[', '').replace(']', '')))

我期望輸出42但錯誤是

以10為底的int()的無效文字:“ 6 * 7”

int無法將值強制轉換為'6* 7'您可以使用eval嘗試此操作。 eval()方法解析傳遞給此方法的表達式,並在程序中運行python表達式(代碼)。

這會起作用

print(eval(str(i).replace(',', '*').replace('[', '').replace(']', '')))

我什至不知道為什么將列表i轉換為字符串,然后執行replaceeval

一種更干凈的方法是使用functools.reduce ,它將在列表中的所有元素之間應用乘法運算符,這樣您就可以將任意長整數列表相乘,此處使用的函數是operator.mul ,代表乘法a*b

In [48]: import operator 
    ...: from functools import reduce                                                                                          

In [49]: reduce(operator.mul, [6,7])                                                                                           
Out[49]: 42

In [50]: reduce(operator.mul, [6,7,8,9,10])                                                                                    
Out[50]: 30240

In [51]: operator.mul(6,7)                                                                                                     
Out[51]: 42

列表乘法的最簡單方法之一是使用functools reduce 這是代碼:

from functools import reduce
multiplied_list = reduce(lambda x, y: x*y, [6,7])
print(multiplied_list)

希望能幫助到你 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM