有没有办法说出每个x值,这样做?

时间:2015-06-22 16:32:07

标签: python python-2.7

在开始之前,我是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

谢谢!

1 个答案:

答案 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]