2013-11-28 3 views
-2

Изучение Python. Я старался всегда создавать одни и те же функциональные возможности, написав наименьшее количество кода как способ стимулировать мое продвижение, но я стараюсь вникать в понимание скорости процесса, а также просто осознание, возможно, менее известного, но все еще очень полезны, ключевые слова python. Так:Python - Самый короткий способ писать/Самый творческий способ писать/Самый быстрый код для обработки

  1. Каков самый короткий способ написать это?

  2. Каков наилучший способ написать это, чтобы он обрабатывал самый быстрый?

  3. И только небольшое дополнение для удовольствия, что такое нерегулярный, но эффективный способ написать это?

Примечание: В то время как это не может быть популярной точки зрения, я не забочусь о читаемости, как я считаю, что это относительный коэффициент зависит от одних мастерства в языке.

def xyFill(listObj, x, y): 
    for row in listObj: 
     x.append(row[0]) 
     y.append(row[1]) 
+2

', как я считаю, что это относительный коэффициент зависит от одних мастерства в language.' кому-то нужно прочитать свой код через 6 месяцев. .. – UmNyobe

+2

«Хотя это не может быть популярным видом, мне все равно, что читаемость ...» Ты прав. Это не будет популярным видом. :-) –

+1

Разве это не тема для [Обзор кода] (http://codereview.stackexchange.com/)? –

ответ

2

Короткое описание = BAD.

Раньше это было хорошо, еще в первые дни написания C действительно компактный код был отличным.

В настоящее время НЕТ!

Мы пишем код для удобства чтения. мы позволяем компилятору (или интерпретатору в вашем случае) делать то, что мы пишем, как можно быстрее. Даже оптимизатор Peepon Peep-hole отлично справляется с этим.

Python ОЧЕНЬ И КРАСИВОСТЬ объектно ориентирована. Пойдите с этим. Напишите код, который будет использоваться повторно, когда люди, использующие его, могут указать, что он делает (но не обязательно, как он работает) только из имен методов и переменных.

Короткие компактные коды = плохо. На языках более низкого уровня (потому что Python отнюдь не игрушка, это превосходный язык), мы не пишем сборку для быстрых частей, потому что сейчас мы сосать. Мы пишем то, что хотим делать ясно, и используем правильный алгоритм и т. Д., Не вмешиваемся в остальные. Компилятор может выделять регистры лучше нас, мы даже не должны пытаться.

У Python есть оптимизатор подглядывания, который приносит его как высокопроизводительный, как может получить виртуальная машина на основе стека. У этого также есть некоторый странный взгляд вперед и кеш.

В обоих интерпретированы и скомпилированы мир МНОГО работы была проделана в смягчающий наказание абстракции, поскольку объекты абстракции и код-повторное использование = большой код :)

+0

Большое значение. – Phoenix

+1

@Robert Я ожидаю, что вы поправитесь, раскаиваетесь и принимаете. : p –

5

Если вы расширяете как x и y с listObj быть два-значение кортежа, вы можете использовать:

new_x, new_y = zip(*lintObj) 
x.extend(new_x) 
y.extend(new_y) 

Если x и y были пусты, чтобы начать с, я только возвращение выход zip(*lintObj) и пусть вызывающие функции вида это:

def xyFill(lintObj): 
    return zip(*lintObj) 

x, y = xyFill(some_list) 
+0

Снято на борту. – Phoenix

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