Python 3.x python中的无限循环递归
我正在研究python中的递归,给学生们指定了难度级别,每个难度都有不同的点。例如,如果给学生分配难度为[4,4,6,6]的作业,他们分别得到[20,20,30,30]的分数。现在,我需要计算这个类将获得的总点数。我使用的是字典,当我输入较小的输入时,我的过程是正确的,但当涉及较大的输入时,我得到一个错误,说程序太长而无法执行,或者我的代码用于无限循环。我使用lambda在列表中循环,并确保它只保留那些为函数返回true的元素Python 3.x python中的无限循环递归,python-3.x,dictionary,recursion,Python 3.x,Dictionary,Recursion,我正在研究python中的递归,给学生们指定了难度级别,每个难度都有不同的点。例如,如果给学生分配难度为[4,4,6,6]的作业,他们分别得到[20,20,30,30]的分数。现在,我需要计算这个类将获得的总点数。我使用的是字典,当我输入较小的输入时,我的过程是正确的,但当涉及较大的输入时,我得到一个错误,说程序太长而无法执行,或者我的代码用于无限循环。我使用lambda在列表中循环,并确保它只保留那些为函数返回true的元素 import numpy as np class Solution
import numpy as np
class Solution:
def maxAssignmentPoints(self, difficulty, points, student) -> int:
output = 0
# assuming there is a 1:1 mapping between difficulty and points
lookup = dict(zip(difficulty, points))
# iterate through each student to get the maximum difficulty
for s in student:
# obtain max difficulty
max_diff = max(list(filter(lambda x: x <= s, difficulty)))
output += lookup[max_diff]
return output
array1 = [int(x) for x in input().split(",")]
array2 = [int(x) for x in input().split(",")]
array3 = [int(x) for x in input().split(",")]
s= Solution()
print(s.maxAssignmentPoints(np.asarray(array1), np.asarray(array2), np.asarray(array3)))
将numpy导入为np
类解决方案:
def maxAssignmentPoints(自我、难度、分数、学生)->int:
输出=0
#假设难度和分数之间有1:1的对应关系
查找=dict(zip(难度、分数))
#迭代每个学生以获得最大难度
对于学生中的学生:
#获得最大难度
max_diff=max(列表(过滤器(lambda x:x为什么要转换为numpy
数组而不使用任何numpy
特性?这样做,您最多可以节省一点内存,但会在Python级别类型和numpy
包装的C级别类型之间增加大量开销转换。应该可以在numpy
功能的工作量不到10%,例如max_diff
可以计算为max_diff=demobility[难度,也不确定这里的递归适用于哪里;此代码中没有递归。