迭代Python列表并在最后一个元素上执行某些操作

Far*_*den 0 python

我正在寻找一种pythonic方法来迭代列表并在最后(也是最后一个)元素上做一些事情.我可以通过两种方式来做到这一点,其中我猜第二种方法是最好的:

for item in a_list:
    #do something to every element
    if a_list.index(item) == len(a_list) - 1:
        # do something to the last one
Run Code Online (Sandbox Code Playgroud)

for n, item in enumerate(a_list):
   #do something to every element
   if n == len(a_list) - 1 :
       # do something to the last one
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有一种方法可以在不调用len()我已经迭代的列表的情况下执行此操作.顺便说一下,我很高兴被告知这不是我应该担心的事情.

mgi*_*son 9

for item in lst:
   do_something_to(item)
else:
   do_something_extra_special_to_last(item)
Run Code Online (Sandbox Code Playgroud)

在这里,我假设您想要对最后一项执行额外的操作(事先仍会对其执行正常操作).我还假设你没有break发表任何声明(在这种情况下else不会执行).当然,你真的不需要else:

for item in lst:
    do_something_to(item)
do_something_extra_special_to_last(item)
Run Code Online (Sandbox Code Playgroud)

应该也可以工作,因为循环变量"泄漏"到封闭范围内,如果有你担心的中断并且你真的在循环序列,为什么不:

for item in lst:
   do_something_to(item)
do_something_extra_special_to_last(lst[-1])
Run Code Online (Sandbox Code Playgroud)