为何嵌套列表判断代码未按预期向目标列表添加元素?
问题原因解析
先拆解两段代码的核心逻辑差异:
第一段代码
any('31_300323' in sl for sl in cleaner)- 它检查的是字符串
'31_300323'是否存在于cleaner的某个子列表sl中。因为cleaner里的子列表确实包含这个字符串,所以返回True,逻辑完全成立。
- 它检查的是字符串
第二段代码的判断条件
any(h in sl for sl in cleaner)- 这里的
h是cleaner里的子列表(即['Re:', '31_300323', 'RE777']),你要检查的是这个列表对象是否存在于cleaner的某个子列表sl中。但cleaner里所有子列表sl的元素都是字符串,根本没有包含其他列表作为元素,所以h永远不会出现在任何sl里,any(...)的结果始终是False,自然不会执行append操作,最终suka就是空列表。
- 这里的
举个反例验证:如果你的cleaner是这样的:
cleaner = [['Re:', '31_300323', 'RE777'], ['test', ['Re:', '31_300323', 'RE777']]]
遍历到h = ['Re:', '31_300323', 'RE777']时,第二个子列表sl里确实包含h,any(...)会返回True,h就会被添加到suka里。
内容的提问来源于stack exchange,提问作者Levdar Armenia
相关产品推荐
相关产品推荐

