3

我有以下代码

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

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

无论如何要知道x当前正在通过for循环运行是否是最后x一个list

4

2 回答 2

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

for else也适用于仅当可迭代(例如列表)用尽并且没有发生while else时子句运行的位置。elsebreak

有很多人觉得这个结构让人难以理解,包括我自己。

于 2013-04-14T17:24:26.207 回答
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()生成器表达式来轻松找出没有匹配项:

if not any(x.value == value for x in some_list):
    print("Not Found.")
于 2013-04-14T17:26:06.270 回答