如何 运行 嵌套循环 python inside list 使得外循环总是从列表的下一个元素开始等等
How to run a nested loop in python inside list such that the outer loop starts from the next element of the list always and so on
我有一个类似这样的列表:
[[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...
不胜感激。谢谢!!
您应该尝试直接使用索引而不是元素进行迭代,从列表中的下一个位置开始会更容易:
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)
时,它将 return 第一个对应的值元素,所以它对前 2 个很好,但对于下一个,它将 return 第一个的位置。
试试这个代码!
外循环的每一次迭代,都需要从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
enumerate() 方法将计数器添加到可迭代对象,returns 它(枚举对象)。
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)
我有一个类似这样的列表:
[[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...
不胜感激。谢谢!!
您应该尝试直接使用索引而不是元素进行迭代,从列表中的下一个位置开始会更容易:
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)
时,它将 return 第一个对应的值元素,所以它对前 2 个很好,但对于下一个,它将 return 第一个的位置。
试试这个代码!
外循环的每一次迭代,都需要从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
enumerate() 方法将计数器添加到可迭代对象,returns 它(枚举对象)。
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)