Определите, на какой итерации вы находитесь в цикле в Python - PullRequest
12 голосов
/ 20 января 2011

По сути, я хотел бы иметь возможность узнать, когда я нахожусь на N-ом элементе в итерации цикла.Есть мысли?

d = {1:2, 3:4, 5:6, 7:8, 9:0}

for x in d:
    if last item: # <-- this line is psuedo code
        print "last item :", x
    else:
        print x

Ответы [ 5 ]

29 голосов
/ 20 января 2011

Использование enumerate:

#!/usr/bin/env python

d = {1:2, 3:4, 5:6, 7:8, 9:0}

# If you want an ordered dictionary (and have python 2.7/3.2), 
# uncomment the next lines:

# from collections import OrderedDict
# d = OrderedDict(sorted(d.items(), key=lambda t: t[0]))

last = len(d) - 1

for i, x in enumerate(d):
    if i == last:
        print i, x, 'last'
    else:
        print i, x

# Output:
# 0 1
# 1 3
# 2 9
# 3 5
# 4 7 last
3 голосов
/ 20 января 2011
for x in d.keys()[:-1]:
    print x
if d: print "last item:", d.keys()[-1]
3 голосов
/ 20 января 2011

Как насчет использования перечисления ?

>>> d = {1:2, 3:4, 5:6, 7:8, 9:0}
>>> for i, v in enumerate(d):
...     print i, v              # i is the index
... 
0 1
1 3
2 9
3 5
4 7
0 голосов
/ 29 августа 2015
list = [1,2,3]

last = list[-1]

for i in list:
    if i == last:
        print("Last:")
    print i

Выход:

1
2
Last:
3
0 голосов
/ 20 января 2011
d = {1:2, 3:4, 5:6, 7:8, 9:0}

for i,x in enumerate(d):
    print "last item :"+repr(x) if i+1==len(d) else x

Но последний элемент неупорядоченного словаря ничего не значит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...