我想知道对 for 循环中的最后一个元素进行特殊处理的最佳方式(更紧凑和“pythonic”方式)。有一段代码应该只 在 元素之间调用,在最后一个被禁止。
这是我目前的做法:
for i, data in enumerate(data_list):
code_that_is_done_for_every_element
if i != len(data_list) - 1:
code_that_is_done_between_elements
有没有更好的办法?
注意:我不想使用诸如使用 reduce
之类的技巧来实现它。 ;)
原文由 e.tadeu 发布,翻译遵循 CC BY-SA 4.0 许可协议
大多数时候,使第 一次 迭代成为特殊情况而不是最后一次迭代更容易(也更便宜):
这适用于任何可迭代对象,即使对于那些没有
len()
的对象:除此之外,我不认为有一个普遍优越的解决方案,因为它取决于你想要做什么。例如,如果你从一个列表中构建一个字符串,使用
str.join()
自然比使用for
循环“特殊情况”更好。使用相同的原理但更紧凑:
看起来很熟悉,不是吗? :)
对于@ofko,以及其他真正需要确定没有
len()
的迭代的当前值是否是最后一个值的人,您需要向前看:然后你可以像这样使用它: