Я использую itertools.product в его обычной форме для генерации списка кортежей.
Затем я перебираю список со стандартным циклом for i in myList:
для получения желаемых результатов.
Iзатем хотите выполнить итерацию во второй раз по тому же циклу, используя for i in myList:
, но он не выполнит второй цикл без моей регенерации myList
до входа в цикл.
Почему это так?
Я посмотрел на справку по itertools в документации по python, которая объясняет, что делает itertools.product (), но не объясняет, почему пользователь должен вызывать ее перед каждой записью цикла.
https://docs.python.org/2/library/itertools.html#itertools.product
import itertools as it
def loopsThings(*lsts):
# list of possibilities
allPossible = it.product(a, b, c)
for i in allPossible:
print('first pass', i)
# list of possibilities
# second pass works if this is un-commented !!
# allPossible = it.product(a, b, c)
for i in allPossible:
print('second pass', i)
return
a = [3, 5, 10]
b = [1, 9, 15]
c = [4, 8]
loopsThings(a, b, c)
я ожидаю получить 2 списка, но получу только 1 список (first pass
)
, чтобы получить второй список, мне нужно запустить allPossible = it.product(a, b, c)
перед входомвторой петли.