Python 获取列表中的下一项。在结尾回到开头

Python 获取列表中的下一项。在结尾回到开头,python,Python,我想在列表中找到下一个元素。在列表的末尾,转到start并获取索引为0的元素。 所以它在无限循环中运行 my_list = [5, 1, 2, 7, 9, 10] # all values are unique while True: for item in my_list: current_item = my_list[my_list.index(item)] try: next_item = my_list[my_list.i

我想在列表中找到下一个元素。在列表的末尾,转到start并获取索引为0的元素。 所以它在无限循环中运行

my_list = [5, 1, 2, 7, 9, 10]  # all values are unique
while True:
    for item in my_list:
        current_item = my_list[my_list.index(item)]
        try:
            next_item = my_list[my_list.index(item) + 1]
        except IndexError:
            next_item = my_list[0]
        print (current_item, next_item)

不用try/except就能完成吗?

也可以这样做

l = [5, 1, 2, 7, 9, 10]

curIndex = 0
l_len = len(l)

while True:
    if curIndex >= l_len:
        curIndex = curIndex - l_len
    print(l[curIndex])
    curIndex += 1```

如果您想永远循环这些项目,您可以这样轻松地完成:

mylist = [5, 1, 2, 7, 9, 10]
while True:
    for (i,x) in enumerate(mylist):
        ci = x
        ni = mylist[(i+1)%len(mylist)]
        print(ci,ni)

对。例如,您可以使用len来执行此操作,但@ThePilotDude是正确的

我的清单=[5,1,2,7,9,10] 尽管如此: 对于0范围内的i,lenmy_list:Loop 1-my_list的长度 当前_项=我的_列表[i] 如果i+1与您的情况类似。

这里有一个简单的解决方案:

my_list = [5, 1, 2, 7, 9, 10]
while True:
    for index,current in enumerate(my_list):
        next_index = (index+1)%len(my_list)
        next_item=my_list[next_index]
        print (current, next_item)
  

由于while循环,它将持续无限次。它可以是这样的。

如果你想在一个列表上反复迭代,在到达末尾时循环回到第一项,请使用itertools.cycle。

这将很有效,而且已经很短了。我不认为有任何需要改变它,我建议保持这样,请解释用例。您可以删除for循环并使用手动计数器,然后使用当前计数器的值索引到列表中,如果计数器大于列表的长度,则重置计数器。这也将使获得下一个元素变得容易。。。
my_list = [5, 1, 2, 7, 9, 10]

for item in range(len(my_list)):
    if(item == len(my_list) - 1):
        break
    current_item = my_list[item]
    next_item = my_list[item+1]
    print (current_item, next_item)