【发布时间】:2015-12-31 11:25:28
【问题描述】:
我目前正在努力寻找一种有效的方法来将附加到列表的字符串元素的一部分与另一个字符串元素进行比较。当前的代码计算很长(1 小时,第一个列表中有 480 万个元素,第二个列表中有 5000 个元素)。
我需要做的:如果第一个字符串元素的 8 个第一个字符等于完整的第二个元素,则使用完整的第一个元素更新第三个列表。找到后,我们测试第一个列表的另一个元素。
代码如下:
for first_element in first_List :
for second_element in second_List:
if first_element[:8] == second_element :
third_List.append(first_element)
break
我知道这类循环并不是处理非常大的列表的最佳方式。 if 测试的数量真的很大。
我想知道是否有有效的方法来做到这一点。
我认为与集合的交集不起作用,因为我将元素的一部分与完整元素进行比较,并且我需要将完整的第一个元素复制到第三个列表中。
请问您有什么建议或想法吗?
【问题讨论】:
-
您可以考虑使用 blist 包中的 sortedlist 作为第二个列表,并使用
if first_element[:8] in second_sorted_List跳过第二个循环。
标签: python string list intersection