如何在for循环结束时执行命令?

时间:2013-04-14 17:23:11

标签: python for-loop

我有以下代码

for x in list:
    if x.getValue == variableValue: 
        Print('Found')

我想在循环的最后一次迭代中打印一条说“找不到匹配项”的语句。

无论如何都知道当前正在通过for循环运行的xx中的最后一个list吗?

2 个答案:

答案 0 :(得分:6)

编辑:

更新的问题有一个简单的答案,没有。任意迭代器不知道它们是否在最后一个项目上,因此for循环无法知道。

也就是说,循环中的值不受循环约束,因此在循环结束后直接x将始终是最后一个值。


如果您希望继续循环,只需设置一个标志:

found = False
for x in some_list:
    if x.value == value: 
        print('Found')
        found = True

if not found:
    print("Not Found.")

如果您不想在循环的每个步骤中执行某些操作,可以使用any()generator expression来轻松找到匹配项:

if not any(x.value == value for x in some_list):
    print("Not Found.")

答案 1 :(得分:5)

for x in list:
    if x.getValue == variableValue: 
        print('Found')
        break
else:
    print('not found')

for else也适用于while else,其中else子句仅在可迭代(例如列表)耗尽且未发生break时才会运行。

有很多人发现这个结构令人困惑,包括我自己。