我正在尝试比较两个列表,并将结果附加到另一个列表中。你知道吗
我的问题是执行时间太长了,有时大约是40秒,这取决于列表的大小。我无法对列表进行排序和相互比较,因为我是从一个更大维度的列表中获得列表的,所以我需要保存索引位置。你知道吗
第一个列表(List1)是3D列表,而第二个列表(List2)是2D列表。所以我需要比较List1的前两个维度和List2的前两个维度,当我得到一个匹配时,我将另一个值附加到使用List1的第三个维度生成的第三个列表中。你知道吗
我使用的是i58thgen,8gbram,执行时间约为10-30秒,代码如下。 我无法对列表进行排序和相互比较,因为我是从一个更大维度的列表中获得列表的,所以我需要保存索引位置。你知道吗
这是我写的代码:
这里lists
是我的List1(3D数组),y
是我的List2(2D数组),damage_id
是4-5个元素的小列表。你知道吗
import timeit
start = timeit.default_timer()
x = 0
a = 0
n = len(damage_id)
lists_classes = [[] for _ in range(n)]
while x < len(damage_id):
#print(x)
for i in lists[x]:
for j in y:
if (i[0],i[1]) == j:
lists_classes[x].append(class_names_list[y.index(j)])
break
x = x + 1
stop = timeit.default_timer()
print('Time: ', stop - start)
如果你们能告诉我一些减少执行时间的方法或超调,我将非常感谢你们。请注意,List1和List2是相当长的列表,List1的长度可变(3D),而List2有大约十万个条目。你知道吗
您可以将list2转换为set,然后检查list1中的前两个元素是否在set中。这将大大提高你的表现。你知道吗
下面是一个基本实现:
将列表1中的100000个项目检查为列表2中的10000个项目需要1.49毫秒
希望有帮助。你知道吗
相关问题 更多 >
编程相关推荐