如何在for循环中初始化列表:
for x, y in zip(list_x, list_y):
x = f(x, y)
不幸的是,即使我想要它,这个循环也不会改变list_x。
有没有办法在循环中引用list_x的元素?
我意识到我可以使用列表理解,但是当 for循环非常复杂时,这很难理解。
编辑:我的for
循环是20行。你通常会把20行放入一个列表理解中吗?
答案 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 ) )