如何创建像圆/循环一样的数组列表?

时间:2014-07-18 21:20:37

标签: python arrays

我有一个数组列表,我在列表中找到我需要的一个点,然后从该点获取3个值,但是虽然这完美,但我很担心,如果该值是列表中的最后一个值会错,相反我会希望它再循环到列表的开头

例如,如果它选择了z,我会希望它也选择a和b

这是我目前的代码:

descriptor_position = bisect_left(orHashList, b32decode(descriptor_id,1)) #should be identiy list not HSDir_List #TODO - Add the other part of the list to it so it makes a circle
   for i in range(0,3):
      responsible_HSDirs.append(orHashList[descriptor_position+i])
   return (map(lambda x: consensus.get_router_by_hash(x) ,responsible_HSDirs))

我可以使用哪种功能或库实现这一目标?

由于

1 个答案:

答案 0 :(得分:4)

您可以使用range生成所需的索引,然后使用列表推导中的模数%运算符将索引循环到列表的开头 - 类似于:

>>> a = ['a', 'b', 'c', 'd', 'e']
>>> index = 4
>>> [x % len(a) for x in range(index, index+3)]

[4, 0, 1]

>>> [a[x % len(a)] for x in range(index, index+3)]

['e', 'a', 'b']