Python 在列表超出范围后,如何迭代列表

Python 在列表超出范围后,如何迭代列表,python,python-3.x,list,loops,Python,Python 3.x,List,Loops,如何从以下列表中获取超出范围的元素: [1,2,3,4,5,6,7,8] 我想做的是从3向前得到12个索引处的元素,所以当我的列表超过它时,因为它只有8个元素,它会从begging等开始,所以我会这样做: 4,5,6,7,8,1,2,3,4,5,6,7 alpha = string.ascii_uppercase key = [] i = 0 while i < 500: for d in alpha: key.append(d) i += 26 答案是7,因为它们

如何从以下列表中获取超出范围的元素:

[1,2,3,4,5,6,7,8]
我想做的是从3向前得到12个索引处的元素,所以当我的列表超过它时,因为它只有8个元素,它会从begging等开始,所以我会这样做:

4,5,6,7,8,1,2,3,4,5,6,7
alpha = string.ascii_uppercase
key = []
i = 0
while i < 500:
   for d in alpha:
   key.append(d)
   i += 26
答案是7,因为它们之间的差异是12

我试着这样想:

4,5,6,7,8,1,2,3,4,5,6,7
alpha = string.ascii_uppercase
key = []
i = 0
while i < 500:
   for d in alpha:
   key.append(d)
   i += 26

在这个示例字母表列表中,用更多元素简单地展开我的列表。

使用模运算符%环绕:

# either key is a global list or you need to add it as an argument
def get_item_at(index, your_list):
    return your_list[index % len(your_list)]
这将始终返回一个值。例如:

key = [1, 2 ,3]
for i in range(4, 6):
    print(get_item_at(i, key))
    # or use this line here. It is the same as get_item_at
    print(key[i % len(key)])
# Output
# 1 2
你可以用一个德克。deque是可以旋转的集合

from collections import deque

my_deque = deque([1,2,3,4,5,6,7,8])
# rotate it backwards 3 indexes so that 4 is in position [0] 
my_deque.rotate(-3)

for i in range(12):
    # print index [0] and rotate as you iterate.
    print(my_deque[0])
    my_deque.rotate(-1)

解释不可理解您缺少关键参数。不跳上globals是邪恶的列车,听起来太关键,但您应该将使用的变量保持在函数范围内。考虑使用这个函数,不仅仅是这个特定的列表,甚至是模块。一个好的功能应该是模块化的,具有自己的范围,而不必依赖其他功能。除此之外,这是一个很好的解决方案。@Axe319您是对的。应该避免全球性的。无论如何,我想坚持OP的代码,所以我用了他的名字。