if i1 == 0:
    i1, i2 = len(sorted_list) - 1, 0
elif i1 == len(sorted_list):
    i1, i2 = i1 - 1, 0
else:
    i2 = (i1 + 1) % len(sorted_list)
return min((angular_distance(theta, L[i], mod), i, L[i]) for i in [i1, i2])
Элегантный способ поиска ближайшего значения в круговом упорядоченном списке