Python 将列表中的所有整数相乘,直到达到一个整数
我试图将列表中的所有元素相乘,直到得到一个整数 x=1234为1x2xx4=24,然后2x4=8 我尝试了numpy.prod,但由于某些原因,它只运行了一次 这是我的密码:Python 将列表中的所有整数相乘,直到达到一个整数,python,numpy,Python,Numpy,我试图将列表中的所有元素相乘,直到得到一个整数 x=1234为1x2xx4=24,然后2x4=8 我尝试了numpy.prod,但由于某些原因,它只运行了一次 这是我的密码: import numpy as np def persistence(p): numbers = list(map(int, list(p))) multiply = [np.prod(np.array(numbers))] return multiply number = input("En
import numpy as np
def persistence(p):
numbers = list(map(int, list(p)))
multiply = [np.prod(np.array(numbers))]
return multiply
number = input("Enter persistence number: ")
x = persistence(number)
z = persistence(x)
print(x)
print(z)
这是一个很好的问题来介绍递归世界中的人。下面是递归解决方案的外观:
def rec_prod(n):
s = str(n)
while len(s) != 1:
n = 1
for i in s:
n *= int(i)
return rec_prod(n)
return n
res = rec_prod(1234)
print(res) # -> 8
我有一个稍微不同的实现:
def f(x):
r = 1
for n in x:
r *= int(n)
if r > 9: #double digit
return f(str(r))
return r
f('1234') #8
这可以通过基本python实现 导入numpy实际上会增加运行时间 尝试使用此功能:
def persistance(n):
while(len(n)>1):
x=1
for i in range(len(n)):
x*=int(n[i])
n=str(x)
return n
n=input()
fin=persistance(n)
print(fin)
希望有帮助:“)这里有一个使用stdlib
math.prod的非递归解决方案:
来自数学导入产品的
def产品(n):
尽管如此:
n=str(n)
如果len(n)==1:
返回整数(n)
n=prod(映射(int,n))
我们得到:
产品(1234)#8
以下是使用该功能的方法:
from math import prod
def persistence(p):
while len(str(p)) > 1:
p = prod([int(i) for i in str(p)])
return p
number = input("Enter persistence number: ")
x = persistence(number)
print(x)
输入:
Enter persistence number: 1234
输出:
8