在不使用for或while循环的情况下将列表中的元素与整数进行比较(老师希望我们使用reduce-nd-map)



我试图在不使用for和while循环的情况下将列表的元素与下限和上限进行比较。我的老师希望我们使用地图和减少功能。问题是,上限是一个与函数绑定的参数,除非我将其设为全局变量,否则我不能在另一个函数中使用它(这有点违背了它作为参数的目的(。话虽如此,必须在我的常数h所在的函数中进行比较。然而,由于我必须使用map和reduce以某种方式循环浏览列表的索引,我必须退出该函数并转到另一个函数(因为map和reduct使用函数(。代码如下:

def fct(n,l,h):
nX = n * l ; nY = n * h
t = list(map(lambda n: "#",range(nX * nY)))

从这里开始,我想将t中的元素与我的极限进行比较:

if 0 <= n <= h-1:
#Do something
elif etc...

这里,n是被比较的值(换句话说,n=t[i](。是否存在使用map和reduce获取n的方法?

取决于什么是do somethng部分:

def fct(n,l,h):
nX = n * l ; nY = n * h
t = list(map(lambda n: n,range(nX * nY)))
return reduce(lambda a,b : a+b, map(lambda a : 0 <= a <= h-1,t))

我想象#Do something是列表元素的总和

def operation(item, lower, upper):
if lower <= item <= upper-1:
...
# Do something
# return value
# do other things, return other values
def iterate(numbers, lower, upper):
return list( map( lambda item: operation(item, lower, upper), numbers) )

根据我对您所写内容的理解,您将遍历列表中的项目(可能是整数(,并检查每个项目是否符合给定的下限和上限。根据它是否合适,你会执行一个动作,如果不是另一个的话。将其分解为单独的函数,一个函数将执行比较,然后对其进行操作,另一个函数则将遍历列表,将该函数应用于每个项。您可以使用map迭代列表中的每个数字,将运算函数应用于每个元素。

最新更新