求解答一下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