Как получить доступ к предыдущему / следующему элементу во время цикла? - PullRequest
42 голосов
/ 27 ноября 2008

Есть ли способ получить доступ к следующему или предыдущему элементу списка (или кортежа, или другого итерируемого) при циклическом выполнении цикла for?

l=[1,2,3]
for item in l:
    if item==2:
        get_previous(l,item)

Ответы [ 12 ]

0 голосов
/ 12 января 2011

Не очень питонно, но делает это и просто:

l=[1,2,3]
for index in range(len(l)):
    if l[index]==2:
        l[index-1]

ДЕЛАТЬ: защитить края

0 голосов
/ 27 ноября 2008

Самый простой способ - поиск по списку для предмета:

def get_previous(l, item):
    idx = l.find(item)
    return None if idx == 0 else l[idx-1]

Конечно, это работает, только если список содержит только уникальные элементы. Другое решение:

for idx in range(len(l)):
    item = l[idx]
    if item == 2:
        l[idx-1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...