python - 如何比较两个列表并返回它们在 python 中每个索引处匹配的次数?

标签 python list

我有两个包含 1 和 0 的列表,例如

list1 = [1,1,0,1,0,1]
list2 = [0,1,0,1,1,0]

我想找到它们在每个索引处匹配的次数。所以在这种情况下,输出将为 3,因为它们仅在索引 1,2 和 3 处具有相同的值。

目前我正在这样做:

matches_list = []
for i in list1:
   index = list[1].index(i)
   if list1[index] == list2[index]:
            mathes_list.append(i)
   else:
       pass
return len(matches_list)

但是这很慢,我想重复多次以比较大量这些列表

我希望有人可以建议我以更快的方式执行此操作。有没有办法使用 set() 函数或类似的东西,例如比较两个列表但保持每个列表的顺序?

最佳答案

zip 列表,比较元素,计算总和。

>>> list1 = [1,1,0,1,0,1]
>>> list2 = [0,1,0,1,1,0]
>>> sum(a == b for a,b in zip(list1, list2))
3

(考虑在 Python 2 中使用 itertools.izip 以提高内存效率。)

关于python - 如何比较两个列表并返回它们在 python 中每个索引处匹配的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43327960/

相关文章:

python - 如何在 Ubuntu 上配置支持 SSL 的 pymssql?

python - ROC 下的 sklearn svm 区域小于 0.5 用于训练数据

python - 如何在 scipy 优化(python 2.7)中定义变量之间的相互依赖关系?

java - 在无限列表中找到最高的 N 个数字

Python 漂亮的矩阵打印

python - 如何从 S3 存储桶中读取 CSV 文件,对其应用某些 if 语句,然后编写新的更新的 CSV 文件并将其放入 S3 存储桶中?

python - 使用 exec() 将 python 输出转换为字符串变量

python - 在列表列表中查找共同元素

Python 返回组中的第一次出现

python - 检查十六进制值列表是否连续