Как я могу перебрать, используя один 3-х индексированный список вместо 3-х вложенных циклов? - PullRequest
0 голосов
/ 29 ноября 2018

Я работаю над проектом на Python, который требует от меня выполнения итерации по списку из 3 элементов:

for i in range(0,10):
 for j in range(0,10):
  for k in range(0,10):
   basis_nums = [i,j,k]

Затем я использую вектор base_nums для других приложений.Однако я хотел бы сделать это следующим образом:

iter_list = [1,1,1]

#[2,1,1]
#[3,1,1]
#.
#.
#.
#[9,1,1]
#[1,2,1]
#.

и т. Д.и увеличивайте элементы списка один за другим до его;

iter_list = [9,9,9]

Есть предложения, как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Или иметь дополнительный repeat=3 в конце:

for basis_nums in itertools.product(range(10),repeat=3):
    print(basis_nums)

itertools.product получает алгоритм математического продукта, встроенный в python, itertools*Модуль 1010 * также содержит алгоритм объединения, как itertools.combination, также модуль содержит алгоритм перестановки, как itertools.permutation.

0 голосов
/ 29 ноября 2018

Вы имели в виду это:

from itertools import product

for basis_nums in product(range(0,10), range(0, 10), range(0, 10)):
    print(basis_nums)

itertools.product сохраняет глубину отступа.(примечание: basis_nums сейчас tuples, а не lists).

...