2015-06-22 4 views
-1

Прежде чем я начну, я новичок в Python, поэтому любое низкоуровневое описание было бы невероятно полезным!Есть ли способ сказать для каждого значения x, сделайте это?

У меня есть список разрешений 60 значений (один час, от 8: 00-9: 00), и я хочу выполнить среднее, максимальное, минимальное и стандартное отклонение для каждого набора из 15. (Я уже имеют среднюю, максимальную, минимальную и STDEV функции). Есть ли понятный способ справиться с этим, который можно легко масштабировать до 1000 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

"* Я новичок в Python *." Могу ли я с уважением предлагаю вам немедленно прекратить работу на текущем проекте и прочитать все [Python Tutorial] (https: // документы. python.org/2/tutorial), включая раздел, где объясняется [разрез списка] (https://docs.python.org/2/tutorial/introduction.html#lists). –

+0

Извините! Я прошёл на прошлой неделе, и я решил вернуться и проверить это. @ Robᵩ. Спасибо за ваше предложение! – TobyTobyo

ответ

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>] производит копию списка, а не список orignal, поэтому, если вы внесете какие-либо изменения в эту копию (если только список не содержит ссылки, а вы делаете изменения внутри указанного объекта), изменения будут не отражают в исходном списке.

Пример -

>>> 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] 
+0

Являются ли значения в lst [0: 5] позицией или значением? Многие из значений в моем списке одинаковы. – TobyTobyo

+0

позиция, а не значения –

+0

Обновлен мой ответ, чтобы четко указать это. –

Смежные вопросы