Python使用any判断列表元素匹配字符串时如何获取对应匹配元素
实现方法
你原来的代码用any()只能判断是否存在匹配,无法获取匹配到的元素,可以用以下两种方案修改,根据你的实际需求选择:
方案1:获取第一个匹配的元素(和原any()逻辑完全一致,短路求值,性能无损失)
该方案遍历到第一个符合条件的元素就会停止,匹配逻辑和你原有代码完全相同,适合只需要确认是否匹配、拿到第一个匹配值即可的场景:
mylist = ["my", "try","some","words"] message = "Do u want my chips?" # 第一个参数是生成器表达式,第二个参数是无匹配时返回的默认值 matched = next((x for x in mylist if x in message), None) if matched: print(f"匹配成功,匹配到的元素为:{matched}") else: print("words not in the message")
方案2:获取所有匹配的元素
如果需要拿到所有符合匹配规则的元素,可以用列表推导式实现:
mylist = ["my", "try","some","words"] message = "Do u want my chips and try some new flavors?" # 筛选所有符合条件的元素 matched_list = [x for x in mylist if x in message] if matched_list: print(f"匹配成功,所有匹配到的元素为:{matched_list}") else: print("words not in the message")
内容的提问来源于stack exchange,提问作者Doğan Ali ŞAN
相关产品推荐
相关产品推荐

