Как запустить вложенный цикл внутри списка так, чтобы внешний цикл всегда начинался со следующего элемента списка и т. Д. - PullRequest
2 голосов
/ 08 июля 2019

У меня есть список что-то вроде:

[[16777230, 0], [16777226, 1], [16777252, 2], [16777246, 0]]

Я хочу сделать цикл внутри цикла (вложенный цикл) для моей операции в Python так, чтобы внутренний цикл всегда начинался со следующего элементавнешний цикл.

Например, внешний цикл будет проходить по всем элементам списка от индекса 0 до 3 в каждой итерации.Но внутренний цикл начинается с индекса 1 и заканчивается на индексе 3 в первой итерации внешнего цикла.Затем, во второй итерации внешнего цикла, внутренний цикл должен пройти от индекса 2 до индекса 3. И так далее ... Последняя итерация внешнего цикла должна сделать внутренний цикл от индекса n до индекса n, в основном толькопоследний элемент, в данном случае от индекса 3 до индекса 3.

Проблема в том, что я удаляю элементы списка, пока я пересекаю.Таким образом, это создает проблемы, такие как индекс списка вне диапазона при использовании функции диапазона для перемещения.

Как построить эти внутренние и внешние циклы?

Я пробовал это, но, похоже, неработа:

for sub_list1 in yx:
    index_sl1 = yx.index(sub_list1)
    for sub_list2 in yx[index_sl1+1:]:
        Operations...

Помощь будет оценена.Спасибо !!

Ответы [ 3 ]

1 голос
/ 08 июля 2019

Попробуйте этот код!

Для каждой итерации внешнего цикла вам необходимо выполнить итерацию внутреннего цикла от шага 1 до диапазона списка.

Код:

arr = [1,5,2,0,4,2,7]
for i in range(0,len(arr)):
    print("Iteration # : ", i+1)
    for j in range(i+1,len(arr)):
        print("Outer loop value : " , arr[i] , " Inner loop value : " , arr[j])

Выход:

Iteration # :  1                                                                                                       
Outer loop value :  1  Inner loop value :  5                                                                           
Outer loop value :  1  Inner loop value :  2                                                                           
Outer loop value :  1  Inner loop value :  0                                                                           
Outer loop value :  1  Inner loop value :  4                                                                           
Outer loop value :  1  Inner loop value :  2                                                                           
Outer loop value :  1  Inner loop value :  7                                                                           
Iteration # :  2                                                                                                       
Outer loop value :  5  Inner loop value :  2                                                                           
Outer loop value :  5  Inner loop value :  0                                                                           
Outer loop value :  5  Inner loop value :  4                                                                           
Outer loop value :  5  Inner loop value :  2                                                                           
Outer loop value :  5  Inner loop value :  7                                                                           
Iteration # :  3                                                                                                       
Outer loop value :  2  Inner loop value :  0                                                                           
Outer loop value :  2  Inner loop value :  4                                                                           
Outer loop value :  2  Inner loop value :  2                                                                           
Outer loop value :  2  Inner loop value :  7                                                                           
Iteration # :  4                                                                                                       
Outer loop value :  0  Inner loop value :  4                                                                           
Outer loop value :  0  Inner loop value :  2                                                                           
Outer loop value :  0  Inner loop value :  7                                                                           
Iteration # :  5                                                                                                       
Outer loop value :  4  Inner loop value :  2                                                                           
Outer loop value :  4  Inner loop value :  7                                                                           
Iteration # :  6                                                                                                       
Outer loop value :  2  Inner loop value :  7                                                                           
Iteration # :  7
1 голос
/ 08 июля 2019

Метод enumerate () добавляет счетчик к итерируемому и возвращает его (объект перечисления).

yx = [1,5,2,0,4,2,7]

for index,sub_list1 in enumerate(yx):
    for sub_list2 in yx[index+1:]:
        print(sub_list2)
0 голосов
/ 08 июля 2019

Вы должны попытаться выполнить итерации с индексами напрямую, а не с элементами, было бы легче начать с позиции nex в вашем списке:

your_list = [1,5,2,0,4,2,7]
for index in range(len(your_list)):
    element_outer_loop = your_list[index]
    for index2 in range(index+1, len(your_list)):
        element_inner_loop = your_list[index2]

В коде, который вы сделали, вы получите плохой результат, потому что ваш список многократно содержит одно и то же значение (например, 2), и когда вы вызываете index(sub_list1), он вернет первые соответствующие элементы, так что это будет хорошо для первые 2, но для следующих он вернет позицию первого.

...