Одной из возможностей является использование itertools.dropeding (но это может быть ограничено, поскольку область действия вашего желаемого решения, как неясно, также itertools.
Вы не предоставили много деталей о вашей модели данных. Я предполагаю, что group.individuals возвращает список индивидуальных объектов, а свойство .id представляет идентификатор каждого человека. Например, вы ищете индивидуальный идентификатор 7 в списке group.individuals:
from itertools import dropwhile
for item in dropwhile(lambda x: x.id != 7, group.individuals):
print item
Он будет проходить по списку, пока не найдет id = 7 (или более точно, до тех пор, пока x.id! = 7, поскольку itertools.dropndom ничего не вернет до первого ложного теста), затем начнет возвращать отдельных лиц. объекты из списка. Поэтому, если идентификаторы из этого списка имеют вид: [1, 19, 5, 6, 7, 2, 4, 5], это вернет: 7 2 4 5.
Для ваших целей звучит так, что вы проигнорируете первый возвращенный ответ, а затем используете ответы после.
Еще одна альтернатива - перебрать ваш первоначальный список group.individuals, чтобы найти индекс нужного вам идентификатора, а затем просто увеличить индекс - это также позволит вам начать индекс с нуля, если ваш вычисленный индекс превышает ваш список, например:
def nextrecord(recordlist, value):
for i in range(len(recordlist)):
if recordlist[i].id == value:
newindex = i + 1
break
if newindex >= len(recordlist):
newindex = 0
return recordlist[newindex]
print nextrecord(group.individuals, 7)
Но, конечно, это более дискретно и не повторяется. Вероятно, есть много других способов приблизиться к этому (в том числе сделать мою функцию повторяемой), но у меня еще не было кофеина!