使用python,如何进行循环“无限”范围索引?

时间:2016-12-28 17:19:52

标签: python python-3.x

有一个列表或str,如下所示:

value[4]

使用i = 4 16进行索引会给我'r'。

如何将我的索引编制为使用较大(无限范围)值(如40)来获取'r',或{{1}}使用'W'?

3 个答案:

答案 0 :(得分:3)

你可以使用模数:

>>> value = "Water"
>>> value[16 % len(value)]
'a'
>>> value[40 % len(value)]
'W'

答案 1 :(得分:1)

我认为你应该使用余数运算符:

>>> value = 'Water'
>>> value[16%len(value)]
'a'
>>> value[40%len(value)]
'W'

答案 2 :(得分:1)

这是一个itertools解决方案,但它并不漂亮......

>>> import itertools
>>> value = 'Water'
>>> next(itertools.islice(itertools.cycle(value), 16))
'a'
>>> next(itertools.islice(itertools.cycle(value), 40))
'W'

itertools.cycle将无限重复您的输入可迭代(在这种情况下为'Water')。 itertools.islice允许您将可迭代切片为list。调用next一次只返回切片中的第一个值。