[英]Issue with maps, for loops and list comprehensions
kn = input().split(" ")
n = int(kn[0])
k = int(kn[1])
niz = list(map(int, input().split(" ")))
newlis = []
def rad(o):
return sum(niz[num:(num+k+o)])/(k+o)
def posao(k):
return max(list(map(rad, range(0, n-k))))
for num in range(len(niz[0:(n-k+1)])):
newlis.append(max(list(map(rad, range(0, n-num)))))
#newlis = [max(list(map(rad, range(0, n-num)))) for num in range(len(niz[0:(n-k+1)]))]
print(max(newlis))
因此,我已经使用了for循环,现在我想使用注释掉的列表推导(甚至map()
)来使其更快。 问题是,当我使用任何一个时,它总是返回num is not defined
。 我完全知道代码很乱而且很脏,但是如果有人可以告诉我我在哪里出错了,我将不胜感激。 我只是python的初学者。
def rad(o):
return sum(niz[num:(num+k+o)])/(k+o) // I guess the problem should
// be here... as ^ num is not defined in this function and neither it is a global variable
尝试将num作为参数传递
def rad(o,num):
return sum(niz[num:(num+k+o)])/(k+o)
newlis = [max([rad(x, num) for x in range(0, n-num)]) for num in range(len(niz[0:(n-k+1)]))]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.