7

Is there any simple way to find the Last Iteration of the for Loop in Python? I just want to convert a list to CSV.

Siva Arunachalam
  • 7,582
  • 15
  • 79
  • 132
  • 6
    No. But maybe if you explain your actual problem, we can suggest an alternative solution? – Björn Pollex Mar 08 '11 at 10:17
  • 2
    I wonder if the standard csv module might solve your problem another way. – Martin Stone Mar 08 '11 at 10:38
  • 1
    I'm not sure why none of the replies to this question actually answer it... – 2rs2ts May 30 '13 at 15:45
  • Here's an actual answer for the generic situation.. http://stackoverflow.com/a/1630350/804616 – trss Jul 13 '14 at 09:45
  • "Is there any simple way to find the Last Iteration of the for Loop in Python? I just want to convert a list to CSV." These are two separate questions, both of which have much better versions, so I closed this as duplicates of both. Aside from that, it is not at all clear *why knowing the "last iteration" would help" in the conversion task. – Karl Knechtel Mar 29 '23 at 05:47

5 Answers5

13

To convert a list to CSV, use the join-function:

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

If the list already contains only string, you just do ",".join(l).

Björn Pollex
  • 75,346
  • 28
  • 201
  • 283
13

Your best solution is probably to use the csv module, as suggested elsewhere. However, to answer your question as stated:

Option 1: count your way through using enumerate()

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

Option 2: handle the final value (my_list[-1]) outside the loop

for value in my_list[:-1]:
    print value, ", followed by"
print my_list[-1]
Martin Stone
  • 12,682
  • 2
  • 39
  • 53
12

To convert a list to csv you could use csv module:

import csv

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

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

The 'file' file would be:

n,f
1,2
jfs
  • 399,953
  • 195
  • 994
  • 1,670
10

actually when a for loop in python ends the name that it bound is still accessible and bound to its last value:

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

i use this trick with with like:

with Timer() as T:
    pass # do something
print T.format() # prints 0.34 seconds
Dan D.
  • 73,243
  • 15
  • 104
  • 123
5

Not exactly what you want:

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


0
1
2
3
4
Last i is 4

Edited: There is csv module in standard library, or simply ','.join(LIST)

Kabie
  • 10,489
  • 1
  • 38
  • 45