我正在寻找一种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()我已经迭代的列表的情况下执行此操作.顺便说一下,我很高兴被告知这不是我应该担心的事情.
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)
| 归档时间: |
|
| 查看次数: |
4606 次 |
| 最近记录: |