Вложено для циклов в Python - PullRequest
       2

Вложено для циклов в Python

7 голосов
/ 23 августа 2011

Я хочу сделать что-то вроде

for a in [0..1]:
    for b in [0..1]:
        for c in [0..1]:
            do something

Но у меня может быть 15 разных переменных. Есть ли более простой способ, как

for a, b, c in [0..1]:
    do something

Спасибо за любую помощь

Ответы [ 3 ]

10 голосов
/ 23 августа 2011

itertools.product * * 1004

import itertools
for a,b,c in itertools.product([0, 1], repeat=3):
  # do something
3 голосов
/ 23 августа 2011

Вы можете перебрать произведение всех их.Используйте itertools.product и передайте свои диапазоны.

import itertools
for i in itertools.product(range(2), range(3), range(2)):
print (i)

выход

(0, 0, 0)
(0, 0, 1)
(0, 1, 0)
(0, 1, 1)
(0, 2, 0)
(0, 2, 1)
(1, 0, 0)
(1, 0, 1)
(1, 1, 0)
(1, 1, 1) 
(1, 2, 0)
(1, 2, 1)
1 голос
/ 23 августа 2011

Похоже, у вас есть матрица / список переменных, которые нужно обработать. Таким образом, лучшим (и самым быстрым) решением является использование инструмента матрицы / списка.

Например: пакет Python itertools.

Как уже намекали другие, itertools.product, вероятно, то, что вы хотите. Но см. Полный список по адресу: http://docs.python.org/library/itertools.html

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...