gpt4 book ai didi

python - 获取两个不同列表中同一索引处的一对值的出现次数

转载 作者:行者123 更新时间:2023-11-28 21:15:29 25 4
gpt4 key购买 nike

我有两个列表(大小相同)

a = [0, 0, 1, 0, 0, 1, 1, 0]
b = [2, 2, 0, 2, 1, 1, 0, 2]

假设当值“0”在列表“a”中匹配时,我需要获取值“2”在列表“b”中出现的次数。例如在前两个列表中,我希望得到 4(我在位置 0、1、3、7 的位置同时在 'a' 中有值 '0' 和在 'b' 中有值 '2')

一种方法:

len([x for x,y in zip(a,b) if x==0 and y==2])

但我想知道是否有更好的解决方案

最佳答案

如果您的数组(也许您指的是列表)会更长,请使用 itertools.izip会更好,因为 zip 将从 ab

中创建相应元素的元组列表
>>> a = [0, 0, 1, 0, 0, 1, 1, 0]
>>> b = [2, 2, 0, 2, 1, 1, 0, 2]
>>> from itertools import izip
>>> sum(x == 0 and y == 2 for x, y in izip(a, b))
4

此处,x == 0 和 y == 2 是一个 bool 表达式,因此结果将是 TrueFalse。在 Python 中,True1False0

>>> False == 0
True
>>> True == 1
True

sum 函数对所有这些求和并给出结果。

另外,请注意我们没有将列表传递给 sum([] 不存在)。这意味着我们正在传递一个生成器表达式。 sum 将调用生成器表达式来获取值。因此,不会创建临时列表,就像在您的 len 解决方案中一样,但会按需检索值。阅读有关生成器和生成器表达式的更多信息,here

因此,如果您的列表很长(因为它避免了任何临时列表构造),此​​解决方案将非常节省空间并且非常有用。

关于python - 获取两个不同列表中同一索引处的一对值的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30100069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com