2011-03-08 155 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]