判断字符串中是否含有列表L1、L2中的元素

假设titleList有100w条数据,而L1、L2列表长度分别为1000,则该算法的时间复杂度为 O(1000000*1000)。
这种方法的时间复杂度要远远优于两个嵌套的for循环。

def getReturn(L1,L2,title):
    
    '''
    param1:
        L1、L2分别为两个长度为1000的列表
    func:
       来一条数据(str型)title,判断title里是否含有的L1、L2里的元素
    '''
    # 设置flag初始值
    flag1 = False
    flag2 = False

    # 循环遍历列表L1,时间复杂度O(1000)
    for word1 in set(L1):
        if word1 in title:
            flag1= True

    # 循环遍历列表L2,时间复杂度O(1000)
    for word2 in set(L2):
        if str(word2) in title:
            flag2=True

    # 判断title中同时含有列表L1、L2中的元素
    if flag1==True and flag2==True:
        return "level1"

    # 判断title中同时含有列表L1但是不含有L2中的元素
    elif flag1==True and flag2==False:
        return "level2"
    
    # 其它情况
    else:
        return "no"

# 多条数据列表titleList
# for title in titleList:
#     print(title,getReturn(pwList,keyWordList,title))

df_data["label"] = df_data["title"].apply(lambda title: getReturn(pwList,keyWordList,title))
df_data
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容