判断字符串中是否含有列表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

你可能感兴趣的:(判断字符串中是否含有列表L1、L2中的元素)