我想在数组中循环多次。当我到达最后一个索引时,下一个索引应该是第一个。例如,我有一个6个元素的数组
array1 = [1,2,3,4,5,6]
我有K = 4,K是我跳过的元素个数。
在上面的例子中,我将从array1[0]开始,跳过包括array1[0]元素在内的K个元素。因此,如果我跳过4个元素,我将到达array1[4]。如果我再跳过K个元素,我将跳过array1[4]、array1[5]、array1[0]和array1[1],到达array1[2]。这个过程将重复N次。
我试着在网上搜索解决方案,因为我想不出一种方法来在圆圈中移动数组。我找到了一个解决方案,上面说要像这样使用模运算符
print a[3 % len(a)]
但是我不能理解这一点,因为我刚刚开始使用Python。
2条答案
按热度按时间yi0zb3m41#
了解什么是模将是有帮助的https://en.wikipedia.org/wiki/Modulo
总而言之,在这个练习中,你不关心你遍历了数组多少次,你只关心"你在当前迭代的哪个位置",因此,使用数组长度作为模的模运算将给你这样的除法的余数,这正是你要寻找的。
示例:
xxls0lw82#
因此,模运算符返回两个数相除的余数。
示例:
所以你的问题可以用这样的方法来解决:
其中N是要打印的元素数
这与创建扩展列表相同,例如:
并打印
range(step,(N+1)*step,step)
中的每个元素,当然这个方法不是最优的,因为你不知道为了不超出边界,你需要连接多少个数组。希望有帮助