Pythonic找到重叠元素的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pythonic找到重叠元素的方法相关的知识,希望对你有一定的参考价值。
我有2个正则表达式,它们提取数据并将它们分类为feature-1和feature-2,但在少数情况下,数据被分类为feature-1(f1)和feature-2(f2)。例如:亚马逊已有100年历史。
100岁被归类为f1,100岁被归类为f2。当它显示在UI上时。它显示为100岁100年是错误的,因为只需要显示100岁。为了处理超集和子集。我试图遍历每个功能并比较它们是否是重叠特征f2。此代码正在运行,但如果要处理25000个功能,则会产生巨大的性能影响。
`if df.iloc[i]['section_id'] == section_id and st_pos != -1:
start_pos.append(st_pos)
end_pos.append(en_pos)
list.append(df.iloc[i]['id'])
'''
In the below loop, the positions are stored in set form, If any subset found, then store it to list_subset
'''
for i in range(0,len(start_pos)-1):
for j in range(i+1,len(start_pos)):
if
set(range(start_pos[i],end_pos[i])).issubset(range(start_pos[j],end_pos[j])):
list_subset.append(list[i])
elif
set(range(start_pos[j],end_pos[j])).issubset(range(start_pos[i],end_pos[i])):
list_subset.append(list[j])`
他们是一个更好的方式来pythonically做这个代码?
答案
假设f1从位置5开始并且长度为4个字母,因此它占据位置5,6,7和8.如果f2在任何这些位置开始,即f2的起始位置大于或等于5,则f2将重叠。小于或等于8。
if f1_start_pos <= f2_start_pos <= f1_start_pos + f1_length - 1:
大概你还需要检查相反的情况:
if f2_start_pos <= f1_start_pos <= f2_start_pos + f2_length - 1:
以上是关于Pythonic找到重叠元素的方法的主要内容,如果未能解决你的问题,请参考以下文章
当我使用 fragmentTransaction.add 方法时片段重叠