我有以下代码
for x in list:
if x.getValue == variableValue:
Print('Found')
我想在循环的最后一次迭代中打印一条“找不到匹配项”的语句。
无论如何要知道x
当前正在通过for循环运行是否是最后x
一个list
?
for x in list:
if x.getValue == variableValue:
print('Found')
break
else:
print('not found')
这for else
也适用于仅当可迭代(例如列表)用尽并且没有发生while else
时子句运行的位置。else
break
有很多人觉得这个结构让人难以理解,包括我自己。
编辑:
更新的问题有一个简单的答案,不。任意迭代器不知道它们是否在最后一项上,因此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.")