Skip to content
Advertisement

How to treat the last element in list differently in Python?

I need to do some special operation for the last element in a list. Is there any better way than this?

array = [1,2,3,4,5] 
for i, val in enumerate(array): 
  if (i+1) == len(array): 
    // Process for the last element 
  else: 
    // Process for the other element 

Advertisement

Answer

for item in list[:-1]:
    print "Not last: ", item
print "Last: ", list[-1]

If you don’t want to make a copy of list, you can make a simple generator:

# itr is short for "iterable" and can be any sequence, iterator, or generator

def notlast(itr):
    itr = iter(itr)  # ensure we have an iterator
    prev = itr.next()
    for item in itr:
        yield prev
        prev = item

# lst is short for "list" and does not shadow the built-in list()
# 'L' is also commonly used for a random list name
lst = range(4)
for x in notlast(lst):
    print "Not last: ", x
print "Last: ", lst[-1]

Another definition for notlast:

import itertools
notlast = lambda lst:itertools.islice(lst, 0, len(lst)-1)
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement