Объединить переменную и для каждого цикла питона - PullRequest
1 голос
/ 06 марта 2012

Есть ли способ сделать это питоническим.

the_list = [1,2,3,4,5]
for x in the_list
   y= get_handler(x)
   #do something with x and y

В принципе, есть ли более простой способ поместить get_handler в for для замедления?

в идеале что-то читаемое, как:

for x, get_handler(x) in the_list:
    #do whatever

Рабочее, но не читаемое решение:

the_list = [1,2,3,4,5]
for x, y in [(item, get_handler(item) for item in the_list )]:   
   # do something

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Нет, «pythonic» означает, как будет выглядеть нормальный код на python (см. Ответ gnibbler: вот что такое «pythonic»).

Если вы хотите что-то, что будет делать именно то, что вы хотите, выможно сделать:

def zipMap(func, iterable):
    for x in iterable:
        yield x,func(x)

Тогда:

for x,y in zipMap(get_handler, the_list):
    ...

Обратите внимание, что это не спасет вас от набора текста вообще.Единственный способ сэкономить печатать - если вы использовали его для curry :

def withHandler(iterable):
    for x in iterable:
        yield x,get_handler(x)

В этом случае спасет вас от печатания:

for x,y in withHandler(the_list):
    ...

Таким образом, было бы разумно, если бы вы часто его использовали.Это не будет считаться «питоническим».

0 голосов
/ 06 марта 2012

Да, поставьте двоеточие в конце строки for, пробел после y и используйте 4 пробела для отступа:)

the_list = [1,2,3,4,5]
for x in the_list: 
    y = get_handler(x)
    # do something with x and y
...