Как сделать вложенные циклы в стиле C ++ (проиндексированные) в python? - PullRequest
4 голосов
/ 20 марта 2012

Что эквивалентно следующему в python?

for (i=0; i<n; i++)
    for (j=i+1; j<n; j++)
        //do stuff with A[i], A[j]

Или, в некотором смысле, следующее.Он также должен удалять элемент из A по завершении каждого раунда цикла.

for a in A:
    for a' in A/{a}: #i.e. rest of the elements of A
        #do something with a,a'
    #remove a from A

Есть ли питонический способ сделать это без использования enumerate ()?

Редактировать:

Извините за плохое описание.

  1. В первом примере я имею в виду использовать i & j только в качестве индексов.Их значения не имеют значения.Это просто грубый эквивалент C ++ последнего.

  2. Внешний цикл выполняется n раз.Внутренний цикл выполняется (n-1), (n-2) ... 0 раз для каждой итерации внешнего цикла.

Может быть, это может помочь (псевдокод):

function next_iteration(list):
    head = first element
    tail = remaining elements #list
    each element in tail interacts with head one by one
    next_iteration(tail)

PS: Все приведенные выше примеры кода являются псевдокодами.Я пытаюсь выразить что-то немного смутное в моем уме.

Ответы [ 11 ]

0 голосов
/ 20 марта 2012

Как насчет:

for i in range(0,n):
    for j in range (i+1,n):
    # do stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...