在Python的FORloops中是否有“skiprange”技术?

2024-10-01 07:15:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

linCirc  = [[1,10],
            [2, 1],
            [0, 2],
            [2, 2],
            [2, 3],
            [2, 4],
            [2, 0],
            [2, 5]]

我想递归地遍历这个可爱的东西

^{pr2}$

本质上,我只需要知道在linCirc上循环的最佳方法,然后当满足某些条件时,我可以控制跳过,并跳过零个或多个元素,而不是从linCirc.index(element)到{}。例如,我可以从[0, 2]到{},而不是从[0, 2]到{}。这是最好的办法吗?是否应该包含for循环?在

对于好奇者:这个代码旨在线性化一个电路,以便任何电路(只有有限的元件;比如说,目前只有电阻和电池)可以用二维阵列(如linCirc)来表示。如果你愿意的话,我会发布我的完整代码,但我不想用无用的代码来阻塞它。在


Tags: 方法代码脚本元素forindex数组element
2条回答

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

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)

example

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

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

相关问题 更多 >