For循环中的Python最后一次迭代

Posted

技术标签:

【中文标题】For循环中的Python最后一次迭代【英文标题】:Python Last Iteration in For Loop 【发布时间】:2011-07-11 00:05:12 【问题描述】:

有没有什么简单的方法可以在 Python 中找到 for 循环的最后一次迭代?我只想将列表转换为 CSV。

【问题讨论】:

没有。但也许如果您解释您的实际问题,我们可以提出替代解决方案? 我想知道标准的 csv 模块是否可以以另一种方式解决您的问题。 我不确定为什么对这个问题的回复都没有真正回答它...... 这是一般情况的实际答案.. ***.com/a/1630350/804616 【参考方案1】:

不是你想要的:

>>> for i in range(5):
    print(i)
else:
    print("Last i is",i)


0
1
2
3
4
Last i is 4

已编辑:标准库中有csv模块,或者干脆','.join(LIST)

【讨论】:

forelse 仅在循环在迭代器末尾退出而不是通过break 退出时运行 我以前没有遇到过这种结构。很有趣。【参考方案2】:

实际上当python中的for循环结束时,它绑定的名称仍然可以访问并绑定到它的最后一个值:

for i in range(10):
    if i == 3:
        break
print i # prints 3

我将这个技巧与with 一起使用:

with Timer() as T:
    pass # do something
print T.format() # prints 0.34 seconds

【讨论】:

【参考方案3】:

要将列表转换为 CSV,请使用join-函数:

>>> lst = [1,2,3,4]
>>> ",".join(str(item) for item in lst)
"1,2,3,4"

如果列表已经只包含字符串,则只需执行",".join(l)

【讨论】:

这将无法正确转义包含 ',' 的值,因为使用 csv 模块【参考方案4】:

要将列表转换为 csv,您可以使用 csv 模块:

import csv

list_of_lists = ["nf", [1,2]]

with open('file', 'wb') as f:
     csv.writer(f).writerows(list_of_lists)

'file' 文件将是:

n,f
1,2

【讨论】:

【参考方案5】:

您最好的解决方案可能是使用 csv 模块,正如其他地方所建议的那样。但是,按照所述回答您的问题:

选项 1:通过使用 enumerate() 计算自己的方式

for i, value in enumerate(my_list):
    print value,
    if i < len(my_list)-1:
        print ", followed by"

选项2:在循环外处理最终值(my_list[-1]

for value in my_list[:-1]:
    print value, ", followed by"
print my_list[-1]

【讨论】:

以上是关于For循环中的Python最后一次迭代的主要内容,如果未能解决你的问题,请参考以下文章

for循环最后一次迭代的指针变化

python为啥for循环只查到一次数据

java中增强for循环的最后一次迭代

Python:为啥这个 for 循环在第一次迭代后退出?

Python for 循环在第一次迭代后停止

jQuery-UI 对话框仅显示 for 循环的最后一次迭代 [重复]