结合变量和每个循环python

时间:2012-03-05 22:58:36

标签: python python-2.5

有没有办法制作这种pythonic。

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 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 个答案:

答案 0 :(得分:2)

不,“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):
    ...

请注意,这根本不会为您节省任何打字费用。它可以节省您输入的唯一方法是使用它来进行 currying

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

在这种情况下 可以保存您输入:

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

因此,如果你碰巧经常使用它可能是合理的。但它不会被视为“pythonic”。

答案 1 :(得分:0)

是的,在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