Уведомления

Группа в Telegram: @pythonsu

#1 Май 1, 2013 11:15:26

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

"А не индийский ли код я написал?" или "Как быстрее/короче и т.д."

С наступившим первомаем!

Изучайте международный язык трудящихся - английский язык! Если ткнуть на приведенной странице в ссылку Format String Syntax то перейдете на страницу где это объясняется гораздо лучше чем я смогу объяснить:
http://docs.python.org/2/library/string.html#formatstrings

Если не на международном языке то примерно так:

{0:2d}
нулевой аргумент - целое занимающее 2 позиции
{3:10.3g}
третий аргумент - общий формат для плавающих чисел поле шириной 10 символов точность 3 значащие цифры.



Офлайн

#2 Май 1, 2013 15:51:56

bot1net
Зарегистрирован: 2013-01-18
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

"А не индийский ли код я написал?" или "Как быстрее/короче и т.д."

doza_and, не устану говорить вам спасибо!
ЗЫ. Постараюсь не задавать глупых вопросов по форматированию. Вот чего мне не хватало: http://docs.python.org/2/library/string.html#grammar-token-format_spec

Отредактировано bot1net (Май 1, 2013 15:55:22)

Офлайн

#3 Май 3, 2013 18:50:42

bot1net
Зарегистрирован: 2013-01-18
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

"А не индийский ли код я написал?" или "Как быстрее/короче и т.д."

Неинтересный вопрос. Функция рассчитывает простое скользящее среднее. В силу отсутствия мозга навыка, написал как смог, в лоб. Посоветуйте, пожалуйста, способ “поэлегантнее”.

def movingAverage(period):
    sma = []
    for i in range(column - period + 1):
        sma.append(sum(cl[i:i+period])/period)
    return sma

Та же просьба актуальна и для следующей функции
def event(param):
    amount = 0
    data1 = []                  
    for i in range(len(cl)-1):
        if cl[i+1]/cl[i] >= 1.05:
            amount += 1
            data1.append(cl[i:i+2+param])
    return data1

Ps. Сабж в курсе, что можно загуглить, но хочется общения с профи Заранее спасибо!

Отредактировано bot1net (Май 3, 2013 19:26:56)

Офлайн

#4 Май 4, 2013 09:00:27

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

"А не индийский ли код я написал?" или "Как быстрее/короче и т.д."

1 Желательно для нового вопроса создавать новую тему, давать ей адекватное название.
2 для среднего http://docs.scipy.org/doc/numpy/reference/generated/numpy.convolve.html
3 Аналог для второго кода трудно найти, поскольку непонятно что такое cl. К сожалению также не уловил смысла в data1, amount рассчитывается, но не используется, это потеря времени при интерпретации и затуманивание кода для тех кто его просматривает.

Желательно выкладывать рабочий код, пользоваться средствами типа pylint



Офлайн

#5 Май 6, 2013 05:58:49

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

"А не индийский ли код я написал?" или "Как быстрее/короче и т.д."

bot1net
Посоветуйте, пожалуйста, способ “поэлегантнее”.
def movingAverage(period):
    return [sum(x) / period for x in zip(*[iter(cl[:column-period])] * period)]
def event(param):
    return [cl[i:i+2+param] for i, (a, b) in enumerate(zip(cl[1:], cl)) if a / b >= 1.05]



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version