我正在尝试为列表的最后一项执行不同的任务。但是我为所有项目执行任务,包括最后一项,然后是最后一项的其他任务。例如,我有一个像文本一样的列表,然后选择按钮。然后最后我需要文字,选择按钮和后退按钮。这是我的代码:
array = ["string1", "string2", "string3", "string4", "string5"]
for item in array:
theTask()
if array.index(item) == len(array) - 1:
theOtherTask()
我知道我的错误,但这是我得到的最好结果。我怎么能解决这个问题?
答案 0 :(得分: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 :(得分: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])
注意,我用一个元组替换了列表,因为用例不需要可变性,并且还更改了worker的名称并提供了一些虚拟打印实现。
在我的机器上输出为:
Working on string1
Working on string2
Working on string3
Working on string4
Working on string5
Working again on string5
如此接近blue_note提供的答案,但包括更多pep8更改作为建议,并为最后一项提供了额外的处理(而不仅仅是on_other_task工作)。
答案 2 :(得分:0)
目前尚不清楚您在寻找什么,但这是对您的代码的改进。
array = ["string1", "string2", "string3", "string4", "string5"]
for item in array:
theTask()
if item is array[len(array) - 1]:
theOtherTask()
即使您的列表中有重复的项目,这也会有效。