在开始之前,我是Python的新手,所以任何低级别的描述都会非常有用!
我有一个列表,让我们说60个值(代表一个小时,从8:00-9:00),我想为每组15个运行平均值,最大值,最小值和标准差。(我已经有了平均值,最大值,分钟和STDEV函数)。是否有一种可以理解的方法可以轻松扩展到1,000.000+值?
我目前这样做的方式不起作用且效率极低,但我发布在下面:
def for_15(tank_data):
for tank in tank_data:
listfifteen = []
tank_dict = []
count = 0
if count <= 14:
count = count + 1
listfifteen.append(tank_data[tank])
tank_dict['0-14 Avg'] = avg(tank_data[tank])
tank_dict['0-14 Max'] = max(tank_data[tank])
tank_dict['0-14 Min'] = min(tank_data[tank])
tank_dict['0-14 STDEV'] = stdev(tank_data[tank])
listfifteen[tank] = tank_dict
print listfifteen
elif count <= 29:
count = count + 1
listfifteen.append(tank_data[tank])
tank_dict['15-29 Avg'] = avg(tank_data[tank])
tank_dict['15-29 Max'] = max(tank_data[tank])
tank_dict['15-29 Min'] = min(tank_data[tank])
tank_dict['15-29 STDEV'] = stdev(tank_data[tank])
listfifteen[tank] = tank_dict
print listfifteen
elif count <= 44:
count = count + 1
listfifteen.append(tank_data[tank])
tank_dict['30-44 Avg'] = avg(tank_data[tank])
tank_dict['30-44 Max'] = max(tank_data[tank])
tank_dict['30-44 Min'] = min(tank_data[tank])
tank_dict['30-44 STDEV'] = stdev(tank_data[tank])
listfifteen[tank] = tank_dict
print listfifteen
else:
count = count + 1
listfifteen.append(tank_data[tank])
tank_dict['45-59 Avg'] = avg(tank_data[tank])
tank_dict['45-59 Max'] = max(tank_data[tank])
tank_dict['45-59 Min'] = min(tank_data[tank])
tank_dict['45-59 STDEV'] = stdev(tank_data[tank])
listfifteen[tank] = tank_dict
print listfifteen
谢谢!
答案 0 :(得分:1)
如果你执行lst[<start>:<end>]
,它会将<start>
索引(非值)包含的元素赋予<end>
(结束索引)独占。
一个例子可能能够更好地解释这一点 -
>>> lst = [1,2,3,4,5,6,7,8,9,10]
>>> lst[0:5]
[1, 2, 3, 4, 5]
>>> lst[5:10]
[6, 7, 8, 9, 10]
此外,如果您离开,则第一个<start>
部分为空,默认情况下会从0
开始,例如 -
>>> lst[:6]
[1, 2, 3, 4, 5, 6]
另外,如果你将最后一个<end>
部分留空,那么它将默认为最后一个元素(len(list)
),这是一个例子 -
>>> lst[4:]
[5, 6, 7, 8, 9, 10]
请注意,[<start>:<end>]
表示法会生成列表的副本,而不是原始列表,因此如果对此副本进行任何更改(除非列表包含引用并且您在引用的对象内部进行了更改),更改不会反映在原始列表中。
示例 -
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> newlst = lst[4:]
>>> newlst
[5, 6, 7, 8, 9, 10]
>>> newlst[0] = 1
>>> newlst
[1, 6, 7, 8, 9, 10]
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]