为列表的最后一项

时间:2017-06-09 10:15:43

标签: python list python-3.x loops

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

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

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

我知道我的错误,但这是我得到的最好结果。我怎么能解决这个问题?

3 个答案:

答案 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()

即使您的列表中有重复的项目,这也会有效。