我有以下代码
for x in list:
if x.getValue == variableValue:
Print('Found')
我想在循环的最后一次迭代中打印一条说“找不到匹配项”的语句。
无论如何都知道当前正在通过for循环运行的x
是x
中的最后一个list
吗?
答案 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
时才会运行。
有很多人发现这个结构令人困惑,包括我自己。