如何在Python中以不同的方式处理列表中的最后一个元素?

我需要为列表中的最后一个元素做一些特殊的操作。 有没有比这更好的方法?

数组= [1,2,3,4,5] 
对于我,枚举(数组)中的val: 
   if(i + 1)== len(array): 
     //处理最后一个元素 
  其他: 
     //处理其他元素 
for item in list[:-1]: print "Not last: ", item print "Last: ", list[-1] 

如果你不想做一份清单的副本,你可以做一个简单的生成器:

 # 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] 

notlast的另一个定义是:

 import itertools notlast = lambda lst:itertools.islice(lst, 0, len(lst)-1) 

如果你的顺序不是很长,那么你可以把它切片:

 for val in array[:-1]: do_something(val) else: do_something_else(array[-1]) 

使用itertools

 >>> from itertools import repeat, chain,izip >>> for val,special in izip(array, chain(repeat(False,len(array)-1),[True])): ... print val, special ... 1 False 2 False 3 False 4 False 5 True 

版本的liori的答案在任何可迭代的工作(不需要len()或切片)

 def last_flagged(seq): seq = iter(seq) a = next(seq) for b in seq: yield a, False a = b yield a, True mylist = [1,2,3,4,5] for item,is_last in last_flagged(mylist): if is_last: print "Last: ", item else: print "Not last: ", item 

if条件的简单方法:

 for item in list: print "Not last: ", item if list.index(item) == len(list)-1: print "Last: ", item 
 for i in items: if i == items[-1]: print 'The last item is: '+i