我正在尝试编写一个接受list作为gcd
函数参数的函数。这样的事情会起作用吗?
def find_my_gcd(a_list):
def gcd (x,y):
while y!=0:
x,y=y,x%y
return x
现在,如何让我的gcd
功能单步执行列表,即a_list=[12,24,18,6]
,遍历gcd(12,24)
,gcd(12,18)
,gcd(12,6)
并返回单一价值。
答案 0 :(得分:0)
你必须将当前值保存在变量中,并将其与列表中的下一个值一起使用,如下所示
def find_my_gcd(a_list):
def gcd (x,y):
while y!=0:
x,y=y,x%y
return x
acum = a_list[0]
for e in a_list[1:]:
acum = gcd(acum,e)
return acum
你也可以使用reduce来保持累积效果
def find_my_gcd(a_list):
def gcd (x,y):
while y!=0:
x,y=y,x%y
return x
return reduce(gcd,a_list)
你也可以在python 3.5+的math.gcd库中找到gcd,而以前的版本中的gcd在fractions.gcd库中,所以你的函数可以简化为
from functools import reduce
from math import gcd # from fractions import gcd in 3.4 or previous
def find_my_gcd(a_list):
return reduce(gcd,a_list)