You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python推导式中实现带条件的双重迭代(非二维列表场景)

解决方案

你可以用集合推导式直接实现需求,一步完成迭代、条件判断和去重,比先列表再转集合更简洁高效:

words = ["snake", "porcupine", "lizard"]
substrings = ["sn", "o", "ke"]

# 直接生成集合推导式,对应原嵌套循环逻辑
new_set = {word for word in words for substr in substrings if substr in word}
print(new_set)  # 输出: {'porcupine', 'snake'}

更高效的写法

如果想避免不必要的内层循环(原逻辑中只要找到一个匹配的子串就可以停止遍历当前word的substrings),可以用any()函数优化:

new_set = {word for word in words if any(substr in word for substr in substrings)}
print(new_set)  # 输出同样是 {'porcupine', 'snake'}

逻辑对应说明

  • 第一种推导式完全匹配你的嵌套循环逻辑:外层遍历words中的每个word,内层遍历substrings中的每个substr,满足substr in word时就将word加入集合(集合自动去重,省去了new = set(new)的步骤)。
  • 第二种写法用any()提前终止内层判断,当某个word找到第一个匹配的子串时就不再检查后续子串,性能更好,尤其是当substrings数量较多时。

内容的提问来源于stack exchange,提问作者You_Donut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:31:11