Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种有效的方法可以对非常大的数字进行基础数学运算?_Python_Math_Largenumber - Fatal编程技术网

Python 有没有一种有效的方法可以对非常大的数字进行基础数学运算?

Python 有没有一种有效的方法可以对非常大的数字进行基础数学运算?,python,math,largenumber,Python,Math,Largenumber,我有一长串非常大的数字(长度都是30多个),我正试图找出一种有效的方法来执行这些数字的基本操作。例如,我知道我可以像 total=sum(list) 或 Python最终会给出答案。然而,作为一个新手,我怀疑有一种更有效的方法可以对我不知道的大数执行运算。你可以使用线性代数库来计算一些基本运算,这些库在任何编程语言中都可以找到。 例如,如果要计算a*b+c*d+e*f+g*h,可以使用两个向量的乘法,a&b如下(它不是一段代码): A=| A c e g | B= |b| |d| |f| |g

我有一长串非常大的数字(长度都是30多个),我正试图找出一种有效的方法来执行这些数字的基本操作。例如,我知道我可以像

total=sum(list)

Python最终会给出答案。然而,作为一个新手,我怀疑有一种更有效的方法可以对我不知道的大数执行运算。

你可以使用线性代数库来计算一些基本运算,这些库在任何编程语言中都可以找到。
例如,如果要计算
a*b+c*d+e*f+g*h
,可以使用两个向量的乘法,a&b如下(它不是一段代码):

A=| A c e g |
B=
|b|
|d|
|f|
|g|
a*b+c*d+e*f+g*h=a*b


那么,一个30个数字的列表,或者一些30+位数的数字?将它们分成若干个部分,然后进行单独的求和和和。这比对每一个数字求和都要快。我只是对一百九十位数字进行了一次求和,结果几乎是在瞬间得出的。你确定你真的需要担心效率吗?你的第二个更好的方法是
reduce(operator.mul,li)
,但是你的第一个方法在本机python中没有更快。如果您需要更好的性能,请转到
numpy
。如果您担心这种类型的优化问题,那么您可能使用了错误的语言。大多数线性代数库不处理任意精度的整数。
for n in range(len(list)):
    total*=list[n]