for循环中的Python列表初始化

时间:2011-01-26 17:37:51

标签: python list list-comprehension

如何在for循环中初始化列表:

for x, y in zip(list_x, list_y):
     x = f(x, y)

不幸的是,即使我想要它,这个循环也不会改变list_x。

有没有办法在循环中引用list_x的元素?

我意识到我可以使用列表理解,但是当 for循环非常复杂时,这很难理解。

编辑:我的for循环是20行。你通常会把20行放入一个列表理解中吗?

3 个答案:

答案 0 :(得分:8)

为什么列表理解会变得复杂?

list_x[:] = [f(tup) for tup in zip(list_x, list_y)]

您可以使用一组生成器表达式或将代码子集抽象为f函数,而不是使用20行for循环。

在没有看到代码的情况下谈论可以完成的事情真是没有意义。

答案 1 :(得分:3)

会这样做吗?

# Create a temporary list to hold new x values
result = []

for x, y in zip(list_x, list_y):
     # Populate the new list
     result.append(f(x, y))

# Name your new list same as the old one
list_x = result

答案 2 :(得分:3)

这也只是一个穷人的冗长列表理解。

def new_list( list_x, list_y ):
    for x, y in zip(list_x, list_y):
        yield f(x, y)

list_x = list( new_list( list_x, list_y ) )