Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个';跳过范围';Python中的FOR循环技术?_Python_Arrays_For Loop_Python 3.2 - Fatal编程技术网

是否有一个';跳过范围';Python中的FOR循环技术?

是否有一个';跳过范围';Python中的FOR循环技术?,python,arrays,for-loop,python-3.2,Python,Arrays,For Loop,Python 3.2,让我们假设(因为这是真的)我有一个Python(3)脚本,它需要在2D数组上迭代(任意长度,但每个元素只是一个包含2个整数的数组,如下表所示) 我想递归地迭代这个可爱的东西,这样 for element in linCirc: if element[0] == 0: # skip element[1] elements 本质上,我所需要知道的是循环linCirc的最佳方法,然后当满足某些条件时,我可以控制跳过,而不是从linCirc.index(element)到lin

让我们假设(因为这是真的)我有一个Python(3)脚本,它需要在2D数组上迭代(任意长度,但每个元素只是一个包含2个整数的数组,如下表所示)

我想递归地迭代这个可爱的东西,这样

for element in linCirc:
    if element[0] == 0:
        # skip element[1] elements
本质上,我所需要知道的是循环linCirc的最佳方法,然后当满足某些条件时,我可以控制跳过,而不是从
linCirc.index(element)
linCirc.index(element)+1
,并跳过零个或多个元素。例如,我可以从
[0,2]
[2,2]
,而不是从
[0,2]
[2,4]
。这是最好的方法吗?是否应该使用for循环

出于好奇:此代码旨在将电路线性化,以便任何电路(具有有限的组件;例如,目前只有电阻器和电池)都可以用2D阵列(如linCirc)表示。如果您愿意,我将发布我的完整代码,但我不想用无用的代码来阻塞它。

index=0
index = 0
while index < linCirc.length:
   if linCirc[index][0] == 0:
       index = index + linCirc[index][1]
   else:
       index = index + 1
当索引

希望这能提供您想要的功能。显然,您必须为此添加一些有用的代码—它只是从数组的开始到结束运行。添加索引检查也可能有帮助,以确保在遇到数组末尾小于
i
[0,i]
元素时不会超出范围。

要支持任意iterable(而不仅仅是list等序列),可以使用:


太棒了,这正是我需要的!遗憾的是,我不能使用for循环的功能,因为它在python中非常方便——但这是可行的,这才是重要的。谢谢顺便说一句,您可以在linCirc中为a、b执行:
:如果不是a:#跳过b元素
,而不是使用索引
元素[0],元素[1]
index = 0
while index < linCirc.length:
   if linCirc[index][0] == 0:
       index = index + linCirc[index][1]
   else:
       index = index + 1
it = iter(linCirc)
for element in it:
    if element[0] == 0:
       # skip element[1] elements
       n = element[1]
       next(islice(it, n, n), None) # see consume() recipe from itertools docs
    print(element)