如何在一个循环中从Python中的所有返回中得到最终结论?
抱歉,问了个愚蠢的问题。 假设我想使用for循环比较两个列表的元素。现在我写道:-如何在一个循环中从Python中的所有返回中得到最终结论?,python,python-3.x,loops,Python,Python 3.x,Loops,抱歉,问了个愚蠢的问题。 假设我想使用for循环比较两个列表的元素。现在我写道:- for i in range(10): if a[i] == b[i]: print('True') else: print('False') 其中a和b是两个列表 现在我将得到10个输出,它们要么是真的,要么是假的。我想要的是,如果它们都是真的,那么只打印真的,如果其中任何一个是假的,那么打印假的(真或假只打印一次) 这只是一个例子,我想用这个方法解决一
for i in range(10):
if a[i] == b[i]:
print('True')
else:
print('False')
其中a和b是两个列表
现在我将得到10个输出,它们要么是真的,要么是假的。我想要的是,如果它们都是真的,那么只打印真的,如果其中任何一个是假的,那么打印假的(真或假只打印一次)
这只是一个例子,我想用这个方法解决一些其他的问题,也就是使用for循环
请提供帮助。如果
a
和b
包含“基元”(字符串、浮点、整数等),您甚至不需要进行元素级比较<代码>a==b就可以了
如果a
和b
包含实现\uuuuu eq\uuu
的任意类的实例,这也会起作用
否则,这可以通过在相当可读的单行中组合、和生成器表达式来实现:
print(all(a_elem == b_elem for a_elem, b_elem in zip(a, b)))
请注意,如果列表包含任意类的实例,则该类仍应实现\uuuuueq\uuuu
all
。一旦找到一对a\u元素,b\u元素
其中a_elem!=b_elem
并返回布尔值False
如果出于某种奇怪的原因,您希望获取字符串'True'
或'False'
,您可以将all
的返回值转换为字符串:
print(str(all(a_elem == b_elem for a_elem, b_elem in zip(a, b))))
上述内容的等效内容将写为:
if all([a[i] == b[i] for i in range(10)]):
print("True")
else:
print("False")
这相当于:
flag = True
for i in range(10):
flag = flag and a[i] == b[i] # or flag &= a[i] == b[i] # since bool's are essentially binary
if flag:
print('True')
else:
print('False')
具有适当边界检查的函数应为:
def compare_lists(a, b, N):
if len(a) >= N <= len(b):
return all([a[i] == b[i] for i in range(N)])
else:
print('Oops!')
def比较列表(a、b、N):
如果len(a)>=N如果有些是真的,有些是假的,会发生什么?@Jim“如果有假,打印假”应该回答that@JimFasarakisHilliard如果有些是真的,有些是假的,那么输出应该是假的。只有当全部为真时,才必须打印真