遍历两个数组的快速方法 python

Quick way to iterate through two arrays python

我遇到过多种情况,我必须在另一个大数组中找到一个大数组的项目。 我通常是这样解决的:

for i in range(0,len(arr1)):
        for k in range(0,len(arr1)):
            print(arr1[i],arr2[k])

效果很好,但有点慢。 有人可以帮助我吗,如何使迭代更快?

如果您需要处理巨大的数组,您可能需要使用 Python 的 numpy 库,它可以帮助您使用 high-efficiency 操作方法并避免您在以下位置使用循环大多数情况下都是。

arr1 = [1,2,3,4,5]
arr2 = [4,5,6,7]
same_items = set(arr1).intersection(arr2)
print(same_items)
Out[5]: {4,5}

设置散列项,因此查找具有 O(1) 的任何元素的时间不是 O(n)。里面的项目需要是可散列的才能工作。如果不是,我强烈建议您找到一种方法使它们可散列。

如果您的数组有重复项并且您想保留它们:

arr1 = [1,2,3,4,5,7,5,4]
arr2 = [4,5,6,7]

res = [i for i in arr1 if i in arr2]
>>> res
'''
[4, 5, 7, 5, 4]

或使用 numpy:

import numpy as np

res = np.array(arr1)[np.isin(arr1, arr2)].tolist()
>>> res
'''
[4, 5, 7, 5, 4]