gpt4 book ai didi

python - 循环比较字符串列表元素与字符串列表子元素的有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:12 26 4
gpt4 key购买 nike

我目前正在努力寻找一种有效的方法来将附加到列表的字符串元素的一部分与另一个字符串元素进行比较。当前代码计算非常长(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 测试的数量确实很大。我想知道是否有一种有效的方法来做到这一点。

我认为与集合的交集不起作用,因为我正在将元素的一部分与完整元素进行比较,并且我需要在第三个列表中复制完整的第一个元素。

请问您有什么建议或想法吗?

最佳答案

这个有效:

second_set = set(second_list)
third_list = [value for value in first_list if value[:8] in second_set]

例子:

>>> first_list = ['abcdfghij', 'xyzxyzxyz', 'fjgjgggjhhh']
>>> second_list = ['abcdfghi', 'xyzxyzxy', 'xxx']
>>> second_set = set(second_list)
>>> third_list = [value for value in first_list if value[:8] in second_set]
>>> third_list
['abcdfghij', 'xyzxyzxyz']

这应该更有效率。列表 second_list 到集合的转换是 O(n)first_list 有一个循环,即 O(n)set 中的查找,即 in second_setO(1)

关于python - 循环比较字符串列表元素与字符串列表子元素的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34545777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com