Python:如何检查字符串是否为列表元素的字符子集
解决字符子集检查的代码问题
你的原代码没输出是因为w in comparison_list是在判断my_list里的元素是否是comparison_list中的完整成员——显然'hello'不等于'this hellotext','oi'也不等于'this oitext',所以条件永远不成立。
要实现字符子集检查(即判断短字符串是否是长字符串的子串),你需要调整判断逻辑,检查每个w是否存在于comparison_list的任意一个元素中,这里有两种简洁的写法:
写法1:嵌套循环
my_list = ['hello', 'oi'] comparison_list = ['this hellotext', 'this oitext'] for w in my_list: # 遍历comparison_list里的每个长字符串,检查是否包含当前w for item in comparison_list: if w in item: print('yes') break # 找到匹配就停止内层循环,避免重复输出
写法2:用any()函数简化(更Pythonic)
my_list = ['hello', 'oi'] comparison_list = ['this hellotext', 'this oitext'] for w in my_list: # any()会遍历生成器表达式,只要有一个满足条件就返回True if any(w in item for item in comparison_list): print('yes')
这两种写法都能输出你想要的结果:
yes yes
另外补充下完整存在性检查的场景:如果你确实需要判断元素是否是comparison_list里的完整成员,那原代码逻辑是对的,只要把comparison_list改成包含完全匹配的元素就行,比如:
my_list = ['hello', 'oi'] comparison_list = ['hello', 'oi'] for w in my_list: if w in comparison_list: print('yes')
这样也会输出yes yes。
内容的提问来源于stack exchange,提问作者StressedBoi69420
相关产品推荐
相关产品推荐

