簡體   English   中英

映射問題,用於循環和列表理解

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM