如何利用另一个列表的元素移除列表中元素的部分内容?
问题解决:从list_A对应元素中移除list_B的子串
你的原有代码逻辑不对——那个列表推导式是筛选list_A中不在list_B里的完整元素,但你要的是把list_B里的对应子串从list_A的元素中删掉,完全不匹配需求。
正确解法
利用zip()将两个列表的对应元素配对,再用字符串的replace()方法移除子串,最后用strip()清理多余空格:
list_A = ['I hate the world', 'I love my mother'] list_B = ['I hate', 'love my'] # 按索引配对A和B的元素,替换后清理空格 list_output = [a.replace(b, '').strip() for a, b in zip(list_A, list_B)] print(list_output) # 输出: ['the world', 'I mother']
补充说明
zip(list_A, list_B)会把两个列表中同位置的元素一一配对,比如第一个配对是('I hate the world', 'I hate'),第二个是('I love my mother', 'love my')replace(b, '')把字符串a中的b子串替换为空,strip()会去掉替换后可能出现的前后多余空格- 如果需要只移除子串的第一次出现,可以用
a.replace(b, '', 1),你的示例场景用默认的全部替换也没问题
内容的提问来源于stack exchange,提问作者Mak3rT0n
相关产品推荐
相关产品推荐

