Obtener el siguiente elemento mientras recorres una lista

li = [0, 1, 2, 3]

running = True
while running:
    for elem in li:
        thiselem = elem
        nextelem = li[li.index(elem)+1]

Cuando esto alcanza el último elemento, unIndexError se genera (como es el caso de cualquier lista, tupla, diccionario o cadena que se repite). En realidad quiero en ese punto paranextelem A igualli[0]. Mi solución bastante engorrosa para esto fue

while running:
    for elem in li:
        thiselem = elem
        nextelem = li[li.index(elem)-len(li)+1]   # negative index

¿Hay una mejor manera de hacer esto?