求解答一下python方法的返回

求解答一下python方法的返回

有这样一个方法:

python">def moving_average(a, w=10):

if len(a) < w:

return a[:]

return [val if idx < w else sum(a[(idx-w):idx])/w for idx, val in enumerate(a)]

我想知道这个返回后面是什么意思,求详细说明下,if else ,for迭代我都懂,但是还是看不懂


回答:

如果这样还看不懂,就没办法了

def moving_average(a, w=10):

if len(a) < w:

return a[:]

print([val if idx < w else sum(a[(idx - w):idx]) / w for idx, val in enumerate(a)])

# 一行代码等价于如下

xxx = []

for idx, val in enumerate(a):

# 如果列表 a 的下标小于 w, 直接将元素添加进 xxx 列表

if idx < w:

xxx.append(val)

# 向前取 10 个元素计算平均值, 添加到 xxx 列表

else:

xxx.append(sum(a[(idx - w):idx]) / w)

print(xxx)

if __name__ == '__main__':

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

moving_average(a)


回答:

def moving_average(a, w=10):

if len(a) < w:

return a[:]

# return [val if idx < w else sum(a[(idx-w):idx])/w for idx, val in enumerate(a)]

val_list = []

for idx, val in enumerate(a):

if idx < w:

val_list.append(val)

else:

val_list.append(sum(a[(idx - w):idx]) / w)


回答:

楼上思路对的,这个是py的高级用法,叫做“推导式”,楼主可以学习下。。

以上是 求解答一下python方法的返回 的全部内容, 来源链接: utcz.com/a/164766.html

回到顶部