如何修改Python列表匹配代码以输出匹配的B列表元素或未匹配的B列表元素?
解决思路与修改后的代码
你原来的代码是从A列表里筛选包含B元素的项,但咱们的目标是基于B列表的元素来输出结果,所以得把遍历的主体换成B才行,下面分两种需求给出解决方案:
需求1:输出B中在A元素里出现过的元素
也就是你说的期望输出hi, you, good,只需要把列表推导式的遍历对象改成B,检查每个B元素是否存在于任意一个A元素中:
A = ["<hi>", "12you","good"] B = ["hi", "you", "good", "luck"] # 遍历B的每个元素,检查是否在A的任意项中出现 C = [b for b in B if any(b in a for a in A)] print(C) # 输出: ['hi', 'you', 'good']
需求2:输出B中未在任何A元素里出现的元素(更期望的结果)
要得到luck这种没匹配上的元素,只需要把条件取反,检查B元素从未出现在任何A元素中:
A = ["<hi>", "12you","good"] B = ["hi", "you", "good", "luck"] # 取反条件:B元素不在任何A项里 C = [b for b in B if not any(b in a for a in A)] print(C) # 输出: ['luck']
简单说就是把遍历的主体从A换成B,再根据需求调整条件的正负,这样就不会出现无关的A列表内容啦~
内容的提问来源于stack exchange,提问作者Therese Svenning
相关产品推荐
相关产品推荐

