[英]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
轉換為字符串,然后執行replace
和eval
。
一種更干凈的方法是使用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.