Я думаю, что вы можете продолжить тренд, например:
[(x,y) for x in [0,1,2,3,4,5] if x < 3 for y in [0,1,2,3,4,5] if 2 < y if x + y == 4]
эквивалентно (взяв каждые for
и if
и поместив их в новую строку):
s = []
for x in [0,1,2,3,4,5]:
if x < 3:
for y in [0,1,2,3,4,5]:
if 2 < y:
if x + y == 4:
s.append((x,y))
Для примера в вопросе, result
внутри понимания списка относится к старому значению result
, поэтому необходимо сохранить это значение при создании нового result
:
result = [[]]
for pool in pools:
old_result = result # remember the old result
result = [] # build the new result with this variable
for x in old_result:
for y in pool:
result.append(x + [y])
В качестве альтернативы, вы можете создать новый result
в другой переменной и установить для него result
:
result = [[]]
for pool in pools:
new_result = [] # build the new result with this variable
for x in result:
for y in pool:
new_result.append(x + [y])
result = new_result # update our current result
Есть также другой пример здесь .