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

[[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...

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

5
JOSEPH Blessingh 8 Июл 2019 в 10:11

3 ответа

Лучший ответ

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

Для каждой итерации внешнего цикла необходимо выполнить итерацию внутреннего цикла от шага 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
Usman 8 Июл 2019 в 07:17

Вы должны попытаться выполнить итерации с индексами напрямую, а не с элементами, было бы легче начать с позиции 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, но для следующего он вернет позицию первого.

0
Xiidref 8 Июл 2019 в 07:15

метод 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)
1
bharatk 8 Июл 2019 в 07:20