2011-03-08 139 views
8

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

+6

但是,也许如果你解释你的实际问题,我们可以建议一个替代解决方案? – 2011-03-08 10:17:03

+2

我不知道标准的CSV模块可以解决你的问题的另一种方式。 – 2011-03-08 10:38:27

+1

我不知道为什么没有答复这个问题的回答居然是...... – 2rs2ts 2013-05-30 15:45:17

回答

12

到一个列表转换为CSV,使用join -function:

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

如果列表中已经包含字符串只,你只是做",".join(l)

+16

这将不能正确转义包含值“”对于使用csv模块 – 2011-03-08 10:40:09

4

不正是你想要的:

>>> 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)

+2

'for'的实际答案'else'只有在不通过迭代结束时退出循环'break' – 2011-03-08 10:28:34

+0

运行我不跨施工之前。有趣。 – neil 2011-03-08 11:15:09

9

实际上当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 
12

要转换列表到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 
10

你最好的解决办法可能是使用csv模块,与其他地方一样建议。然而,要回答你的问题是说:

方案1:通过使用枚举()

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]