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

时间:2019-05-09 03:58:13

标签: python-3.x

我正在尝试将列表的所有成员相乘

i = [6,7]

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

我希望输出42,但错误是

  

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

3 个答案:

答案 0 :(得分:1)

我什至不确定为什么要将列表i转换为字符串,然后执行replaceeval

一种更干净的方法是使用functools.reduce,它将在列表中的所有元素之间应用乘法运算符,这样您就可以将任意长整数列表相乘,我们在这里使用的函数是{{ 3}},代表乘法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

答案 1 :(得分:0)

#include <set> struct A { int k = 0; }; class Test { public: static std::set<A*> collection; ~Test(){ collection.clear(); } }; Test t; int main() { A* p = new A(); t.collection.insert(p); delete p; } auto Test::collection = std::set<A*>(); 无法转换值int 您可以使用'6* 7'进行尝试。 eval方法解析传递给该方法的表达式,并在程序中运行python表达式(代码)。

这将起作用

eval()

答案 2 :(得分:0)

最简单的列表乘法方法之一是使用reduce中的functools。这是代码:

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

希望它会有所帮助:)