huge_list
参数类似于[[12,12,14],[43,356,23]]
。我将列表转换为set的代码是:
cpdef list_to_set(list huge_list):
cdef list ids
cdef list final_ids=[]
for ids in huge_list:
final_ids.append(set(ids))
return final_ids
我有2800个列表元素,每个元素有30,000个id。大约需要19秒。如何提高绩效?
编辑1:
而不是set
我在unique
中使用了numpy
,而numpy
加速了大约7秒:
df['ids'] = df['ids'].apply(lambda x: numpy.unique(x))
现在需要14秒(之前是~20秒)。我不认为这个时间是可以接受的。 :|
答案 0 :(得分:1)
Cython无法加速任何事情。大部分时间都花在建筑物上,例如计算元素的哈希值并将其存储在地图中。这已经在C中完成,因此无法加速。纯python版本:
final_ids = [set(ids) for ids in huge_list]
会导致相同的结果。
答案 1 :(得分:0)
如果您只想将嵌套列表转换为设置,则只需使用map
函数:
final_ids=map(set,huge_list)