2014-01-31 3 views
4

Я пытаюсь одновременно увеличивать несколько переменных и вставлять их в одну строку. Какой был бы самый питонический способ сделать это, если есть способ?+ = с несколькими переменными в python

+18

Пути Pythonic не должны делать это на одной линии. –

+1

Любой язык во всех отношениях - это не одна и та же линия, за исключением Perl, конечно. :) –

+0

@MattBall Это самый простой способ одновременного обновления нескольких переменных. Вот [основной разработчик Python, рассказывающий вам, когда делать это в одной строке, и почему (@ 34: 00)] (http://pyvideo.org/video/1780/transforming-code-into-beautiful-idiomatic-pytho) – Air

ответ

4

Если вы хотите, чтобы написать одну строку, вы можете попробовать несколько назначения, но без += синтаксиса:

a, b, c = a+1, b+1, c+1 

Или для более вещего решения, избежать Однострочника:

a += 1 
b += 1 
c += 1 
+0

Мне нравится мой код в одном лайнере. Я начинаю думать, что это может быть просто самым простым способом. – user3255511

+5

@ user3255511 у вас будет много смертельных врагов в будущем, если вы не будете красиво форматировать свой код, xD – markcial

+0

Вы также проклинаете себя, если вам когда-либо понадобится поддерживать свой собственный код в ... о ... 2 месяца позже. Готов поспорить, вам также не нравятся комментарии. –

1

Скажем, у вас есть

a, b, c = [1, 2, 3] 

после определения:

def add1(x): 
    return x+1 

Вы можете сделать:

print(map(f,[a, b, c])) # prints [2, 3, 4] 

означает, что следующая строка даст вам то, что вы хотите:

a, b, c = map(add1,[a, b, c]) 

который немного легче сделать, чем:

a, b, c = a+1, b+1, c+1 

в случае, если у вас большой массив. Кроме того, вы поддерживаете читаемость и получите свой «один лайнер».

+0

Для этого требуется листинг его в список, и это заставляет меня беспокоиться о большей сложности, но полезной информации. Это дает мне идеи о том, как наконец использовать функцию лямбда. – user3255511

+0

@ user3255511, конечно, вы можете определить лямбду «inline» (внутри карты) – alfasin

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