Python - 如何从随机点开始循环遍历范围

mon*_*ker 3 python loops list

我有一个类别列表(1-4),我想要一个循环迭代所有这些.但是我需要能够以随机类别开始并且如果我的起点位于列表[0]之前,则回绕到列表的开头.

我能够以相当冗长的方式做到这一点,但我想知道是否有更快/更优雅的方式.这就是我所做的(并且它有效):

def categorize(self, cat):

    cats = [1,2,3,4]
    if cat > 1: 
        ncats = cats[:(cat-1)]
        cats = cats[(cat-1):]
        cats.extend(ncats)

    for c in cats:
        pass
Run Code Online (Sandbox Code Playgroud)

YXD*_*YXD 7

from random import randrange
cats = [1,2,3,4]
i = randrange(len(cats))

for c in cats[i:]+cats[:i]:
   pass
Run Code Online (Sandbox Code Playgroud)

(改变choicerandrange为每建议)