我正在尝试将列表的所有成员相乘
i = [6,7]
print(int(str(i).replace(',', '*').replace('[', '').replace(']', '')))
我希望输出42
,但错误是
以10为底的int()无效文字:“ 6 * 7”
答案 0 :(得分:1)
我什至不确定为什么要将列表i
转换为字符串,然后执行replace
和eval
。
一种更干净的方法是使用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)
希望它会有所帮助:)