Python 比较多个列表的n个元素

Python 比较多个列表的n个元素,python,Python,我有两个元组(它们也可以是列表)和相关的元素。一个例子如下: as = (a0, a1, a2, a3, a4) bs = (b0, b1, b2, b3, b4) 同一索引中的元素一起考虑:“a0”与“b0”相关,“a1”与“b1”相关,等等 如果“a0”不为零,则“b0”不得为零,反之亦然 如何对这两个元组中的所有元素测试此条件,以便对相关对(a1,b1),(a2,b2)等测试此条件?您可以使用izip轻松解决此问题 from itertools import izip ... for

我有两个元组(它们也可以是列表)和相关的元素。一个例子如下:

as = (a0, a1, a2, a3, a4)
bs = (b0, b1, b2, b3, b4)
同一索引中的元素一起考虑:“a0”与“b0”相关,“a1”与“b1”相关,等等

如果“a0”不为零,则“b0”不得为零,反之亦然


如何对这两个元组中的所有元素测试此条件,以便对相关对
(a1,b1)
(a2,b2)
等测试此条件?

您可以使用izip轻松解决此问题

from itertools import izip

...

for a, b in izip(tuple1, tuple2):
    if not check(a, b)
        return False
return True

# or as a one-liner
all(check(a, b) for (a, b) in izip(tuple1, tuple2))
check
可以按如下方式实现(注意,我按照字面意思将规范与零进行比较,而不是使用python Truthynes):

或者,如果您知道元组仅包含数字数据,则可以简化为:

def check(a, b):
    return bool(a) != bool(b)
但请记住

文件

这使用
zip
将两个元组中的值关联起来,在迭代结果时将它们作为一对返回

对每一对进行评估,以查看它们是非零(真)还是零(假)


all
用于合并所有结果;如果任何对返回
False
,则结果为
False

“不能为零”或不能为零?你需要对照
a1
等检查
a
吗?你就不能把操作符链接起来吗?在
not(x==y==0)
上执行if测试
a1
应更改为if
a1==0和a!=0
<代码>a?我不清楚你想实现什么。您能提供一些示例输入和所需输出吗?“我如何为所有元素执行此操作”谢谢Mark,但我不理解您的代码。zip是python中的函数吗?我没有否决它,我只是说我不理解它。想知道zip是否是python中的函数吗?@user3726586,是的,
zip
all
都是内置函数。@user3726586我没有指责你(特别是其他人)是投票人。只是好奇到底发生了什么。+1-我看不出这个答案有什么不对。我会把同样的东西放进去,除了我可能会做
ok=all(bool(a)=bool(b)代表a,b在zip中(tuple1,tuple2))
。但同样的概念也适用。当然,然后elem是传递给izip的迭代器的所有第n个元素的元组。非常感谢Robbie。这绝对是非常接近我所寻找的。了不起的谢谢,如果你觉得有帮助的话,别忘了投票并选择答案!谢谢你,Robbie,我已经投了更高的票。你帮了我很大的忙。显然,Robbie,因为我今天刚刚注册,所以我被阻止投票,因为我在这里的声誉仍然很低。我需要15个名声,但我没有。啊。不管怎样,你的回答对我帮助最大。
def check(a, b):
    return bool(a) != bool(b)
ok = all((a and b) or (not a and not b) for a,b in zip(tuple1,tuple2))