转换为设置 'before' 启动循环在 Python 中更快?
Converting to set 'before' starting loop is faster in Python?
我有一个长度为 100000 的大型一维列表 arr1
,其中可能包含重复项,而另一个列表 arr2
包含 arr1
中的许多元素,但不能有重复项。我希望将也在 arr2
中的 arr1
的所有元素附加到第三个列表 arr3
:
file = []
with open('input.txt') as inputfile:
for line in inputfile:
file.append(line.strip().split(' '))
arr1 = file[1] # 2nd line of input file
arr2 = file[2] # 3rd line of input file
arr2 = set(arr2)
arr3 = [element for element in arr1 if element in arr2]
工作正常。但是当我尝试时:
arr3 = [element for element in arr1 if element in set(arr2)]
与最后两行相反,我希望得到完全相同的结果,因为它们看起来是一样的,但是 运行 这种方式需要很长时间。这些有什么不同吗?
Here 是输入文件。
if 语句在每次迭代中都是 运行 - 因此每次迭代都会转换为 set。
在比较循环成为解决方案之前,您需要转换为集合。
我有一个长度为 100000 的大型一维列表 arr1
,其中可能包含重复项,而另一个列表 arr2
包含 arr1
中的许多元素,但不能有重复项。我希望将也在 arr2
中的 arr1
的所有元素附加到第三个列表 arr3
:
file = []
with open('input.txt') as inputfile:
for line in inputfile:
file.append(line.strip().split(' '))
arr1 = file[1] # 2nd line of input file
arr2 = file[2] # 3rd line of input file
arr2 = set(arr2)
arr3 = [element for element in arr1 if element in arr2]
工作正常。但是当我尝试时:
arr3 = [element for element in arr1 if element in set(arr2)]
与最后两行相反,我希望得到完全相同的结果,因为它们看起来是一样的,但是 运行 这种方式需要很长时间。这些有什么不同吗?
Here 是输入文件。
if 语句在每次迭代中都是 运行 - 因此每次迭代都会转换为 set。
在比较循环成为解决方案之前,您需要转换为集合。