2017-06-09 36 views
1

我正在尝试为列表的最后一项执行不同的任务。但是我会为所有项目完成任务,包括最后一项,然后再为最后一项添加其他任务。例如,我有一个像文本和选择按钮的列表。然后最后我需要文字,选择按钮和后退按钮。这是我的代码:为列表的最后一项运行不同的功能

array = ["string1", "string2", "string3", "string4", "string5"] 

for item in array: 
    theTask() 
    if array.index(item) == len(array) - 1: 
     theOtherTask() 

我知道我的错误,但那是我得到的最好结果。我如何解决这个问题?

回答

1

不知道你想做的事,但大概就像

for item in array[:-1]: 
    theTask() 

item = array[-1] 
theOtherTask() 

或者

for index, item in enumerate(array): 
    if index < len(array) - 1: 
     theTask() 
    else: 
     theOtherTask() 
1

当你要为最后一个项目都the_task和the_other_task,并进一步用参数来表示处理什么去上班上(其中工人):

#! /usr/bin/env python 


def the_task(task): 
    print('Working on', task) 


def the_other_task(task): 
    print('Working again on', task) 


tasks = ("string1", "string2", "string3", "string4", "string5") 

for task in tasks: 
    the_task(task) 
the_other_task(tasks[-1]) 

注意,我更换了列表用元组,因为用例不需要可变性,并且还更改了工作人员的姓名并提供了一些虚拟打印实现。

在我的机器的输出是:

Working on string1 
Working on string2 
Working on string3 
Working on string4 
Working on string5 
Working again on string5 

如此接近的由blue_note提供,但包括更多PEP8变化的建议,也为最后一个项目提供的附加处理(而不是仅仅the_other_task工作的答案它)。

0

目前还不清楚你在找什么,但是这是对你的代码的改进。

array = ["string1", "string2", "string3", "string4", "string5"] 

for item in array: 
    theTask() 
    if item is array[len(array) - 1]: 
     theOtherTask() 

即使您的列表中有重复的项目,这也可以工作。

相关问题