Python 在转到 else 语句之前检查整个循环
Python check the whole loop before going to the else statement
如果 if
条件为假,我如何 运行 完成整个循环然后转到 else
语句?
输出为:
No
No
Yes
但我只希望它在所有值都不相等时跳转到 else 语句!
test_1 = (255, 200, 100)
test_2 = (200, 200, 100)
test_3 = (500, 50, 200)
dict = {"test_1":test_1,
"test_2":test_2,
"test_3":test_3}
for item in dict:
if dict[item] == (500, 50, 200):
print('Yes')
else:
print('No')
基本上输出应该是这样的,因为其中一个值是真的。
Yes
您需要 运行 循环直到找到匹配项。为此,您可以使用 any
函数,例如
if any(dict_object[key] == (500, 50, 200) for key in dict_object):
print('Yes')
else:
print('No')
我们将生成器表达式传递给 any
函数。生成器表达式从字典中获取每一项并检查它是否等于 (500, 50, 200)
。一旦找到匹配项,any
将立即 return True
,其余的迭代甚至不会发生。如果 none 项匹配 (500, 50, 200)
,any
将 return False
和 No
将被打印。
编辑: 在聊天中与 OP 进行了长时间的讨论后,他实际上也想知道匹配的项目。因此,更好的解决方案是像 NPE 的其他答案一样使用 for..else
,例如
for key in dict_object:
if key.startswith('test_') and dict_object[key] == (500, 50, 200):
# Make use of `dict_object[key]` and `key` here
break
else:
print('No matches')
But I only want it to jump to the else statement if all of the values does not equal!
Python 的 for
-else
构造可用于执行此操作:
for item in dict:
if dict[item] == (500, 50, 200):
print('Yes')
break
else:
print('No')
有关进一步讨论,请参阅 Why does python use 'else' after for and while loops?
但是,在这个特定的实例中,我根本不会使用显式循环:
print ("Yes" if (500, 50, 200) in dict.values() else "No")
也许使用 in
运算符:
item_appears_in_dict = item in dict.values()
print "Yes" if item_appears_in_dict else "No"
如果 if
条件为假,我如何 运行 完成整个循环然后转到 else
语句?
输出为:
No
No
Yes
但我只希望它在所有值都不相等时跳转到 else 语句!
test_1 = (255, 200, 100)
test_2 = (200, 200, 100)
test_3 = (500, 50, 200)
dict = {"test_1":test_1,
"test_2":test_2,
"test_3":test_3}
for item in dict:
if dict[item] == (500, 50, 200):
print('Yes')
else:
print('No')
基本上输出应该是这样的,因为其中一个值是真的。
Yes
您需要 运行 循环直到找到匹配项。为此,您可以使用 any
函数,例如
if any(dict_object[key] == (500, 50, 200) for key in dict_object):
print('Yes')
else:
print('No')
我们将生成器表达式传递给 any
函数。生成器表达式从字典中获取每一项并检查它是否等于 (500, 50, 200)
。一旦找到匹配项,any
将立即 return True
,其余的迭代甚至不会发生。如果 none 项匹配 (500, 50, 200)
,any
将 return False
和 No
将被打印。
编辑: 在聊天中与 OP 进行了长时间的讨论后,他实际上也想知道匹配的项目。因此,更好的解决方案是像 NPE 的其他答案一样使用 for..else
,例如
for key in dict_object:
if key.startswith('test_') and dict_object[key] == (500, 50, 200):
# Make use of `dict_object[key]` and `key` here
break
else:
print('No matches')
But I only want it to jump to the else statement if all of the values does not equal!
Python 的 for
-else
构造可用于执行此操作:
for item in dict:
if dict[item] == (500, 50, 200):
print('Yes')
break
else:
print('No')
有关进一步讨论,请参阅 Why does python use 'else' after for and while loops?
但是,在这个特定的实例中,我根本不会使用显式循环:
print ("Yes" if (500, 50, 200) in dict.values() else "No")
也许使用 in
运算符:
item_appears_in_dict = item in dict.values()
print "Yes" if item_appears_in_dict else "No"