出现IndexError时使数组重复

当代码抛出IndexError时,我希望数组循环。这是示例:


a = [1, 2, 3, 4, 5]


a[x] -> output

0 -> 1

1 -> 2

...

4 -> 5

after except IndexError

5 -> 1

6 -> 2

...

9 -> 5

10 -> IndexError (Should be 1)

我的代码可以工作,但是当pos> 9时,它仍会引发IndexError。


pos = 5

try:

    a = [1, 2, 3, 4, 5]

    print(a[pos])

except IndexError:

    print(a[pos - len(a)])


潇潇雨雨
浏览 174回答 3
3回答

冉冉说

如果需要循环迭代器,请使用itertools.cycle。如果在索引时只需要循环行为,则可以使用基于模的索引。In [20]: a = [1, 2, 3, 4, 5]In [21]: pos = 9In [22]: a[pos % len(a)]Out[22]: 5

RISEBY

这是因为当pos > 4 and pos < 10您的代码引发IndexError异常,然后运行a[pos - len(a)]该异常时,将提供所需的结果。但是,当时pos >= 10,控件将转到Except块,但是该语句a[pos - len(a)]也将给出IndexError异常,因为pos - len(a)len(a)是一个常数,所以它将大于4。我建议您实现一个循环迭代器,关于该循环迭代器在他的回答中提到了Coldspeed,或者如果您想采用这种方法,请执行以下操作:except IndexError:&nbsp; &nbsp; print(a[pos % len(a)])PS您也不需要将整个内容放在try-except块中。^。^

红糖糍粑

您要打印a[pos % len(a)]而不是a[pos - len(a)],因为任何大于10减5的值都大于5。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python