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.

5
  • 6
    No. But maybe if you explain your actual problem, we can suggest an alternative solution? Commented Mar 8, 2011 at 10:17
  • 2
    I wonder if the standard csv module might solve your problem another way. Commented Mar 8, 2011 at 10:38
  • 1
    I'm not sure why none of the replies to this question actually answer it... Commented May 30, 2013 at 15:45
  • Here's an actual answer for the generic situation.. stackoverflow.com/a/1630350/804616 Commented Jul 13, 2014 at 9: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. Commented Mar 29, 2023 at 5:47

5 Answers 5

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

Sign up to request clarification or add additional context in comments.

1 Comment

this will not properly escape values containing ',' for that use the csv module
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]

Comments

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

Comments

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

Comments

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)

2 Comments

for's else only runs if the loop exits at the end of the iterator not via break
I'd not come across that construction before. Interesting.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.