There are several different blocks of code you could tack onto a loop (I've deliberately chosen somewhat unusual words to express these here): for x in items: # body interstitially: # things to do between loop iteration # (executed after each iteration in the loop when there is a next value) subsequently: # things to do after the last element of the loop is processed # (when the loop is not exited by break) contrariwise: # things to do if the list was empty For example: result = "" for x in items: result += str(x) interstitially: result += ", " contrariwise: result = "no data" When I first learned that Python had an 'else' clause on loops, I assumed it meant 'contrariwise'. I was surprised that it actually meant 'subsequently'. To be more clear, contrariwise is essentially equivalent to: empty = True for x in items: empty = False # body if empty: # do contrariwise code and interstitially is essentially equivalent to: first = True for x2 in items: if not first: # do interstitial code first = False x = x2 # body I think these are common/useful paradigms. I'm curious what others think. --- Bruce