搜索和添加到随着每个循环而增长的大型列表的最有效方法

2024-10-04 07:37:05 发布

您现在位置:Python中文网/ 问答频道 /正文

简而言之,我在一个列表(所有点的列表)中有一个列表(坐标)(与点相关的其他信息)。它需要能够处理数以万计的值,而且速度显然会呈指数级下降,因此理想情况下,最有效的解决方案将是有用的。你知道吗

每次代码运行时,它都会向列表中添加一个新项,因此排序不是一个选项。
我见过有人建议集合,但如果列表不断增长,而我需要的值在主值中,这种方法是否有效?或者我可以考虑使用一个单独的集合来存储坐标作为一个集合,但是增加的内存需求值得额外的速度吗?你知道吗

我目前的做法与此类似:

growingList = [ [[1,0,0],0,0], [[1,1,0],1,0] ]
itemToAdd = [5,7,3]

itemExists = False
for i in range( len(growingList) ):
    if itemToAdd == growingList[i][0]:
        itemExists = True
        break
if itemExists == False:
    growingList.append( [itemToAdd, otherValue, otherValue2] )

Tags: 信息false列表if排序选项情况解决方案
1条回答
网友
1楼 · 发布于 2024-10-04 07:37:05

您有一组唯一的项和关联的数据。您要查找的数据结构是一个字典。以下代码相当于您使用字典的示例:

data = { (1, 0, 0): [0, 0], (1, 1, 0): [1, 0] }
keytoadd = (5, 7, 3)
valuetoadd = [othervalue, othervalue2]

if keytoadd not in data:
    data[keytoadd] = valuetoadd

它绝对不会像你担心的那样以指数级的速度慢下来。平均案例插入时间为常数(O(1))。如果您需要一个列表,那么当您需要它时,您可以很容易地从字典中获得它:data.items()。你知道吗

相关问题 更多 >