遍历两个数组的快速方法 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]
我遇到过多种情况,我必须在另一个大数组中找到一个大数组的项目。 我通常是这样解决的:
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]