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

基于双for循环的列表推导式筛选两列表中的非负整数

符合要求的双for循环列表推导式解法

嘿,我懂你的需求啦——题目明确要求用两个for循环的列表推导式来筛选非负整数,你当前的写法虽然能得到正确结果,但确实只用到了一个for循环(遍历合并后的I+R),不符合题目的硬性要求。

这里给你两种符合要求的写法,核心都是在列表推导式里嵌套两个for循环:

方法一:遍历列表容器,再遍历每个列表元素

这是最直观的双循环写法,第一个循环负责依次取到I和R这两个列表,第二个循环遍历当前列表里的每个元素,再加上筛选条件:

I = [-1, 0, 1, 2]
R = [2.7818, 0.0, -3.14159]
NonNeg = [num for lst in [I, R] for num in lst if num >= 0 and isinstance(num, int)]
print(NonNeg)  # 输出: [0, 1, 2]

方法二:显式对两个列表分别做双循环(冗余但贴合表述)

如果你想更明确地体现对I和R的两个独立循环逻辑,也可以用这种稍显冗余的写法:

NonNeg = [num for num in I if num >= 0 and isinstance(num, int) for _ in [0]] + \
         [num for num in R if num >= 0 and isinstance(num, int) for _ in [0]]

不过这种写法只是为了凑双循环形式,实际开发中更推荐第一种简洁的写法。

为什么你的原写法不符合要求?

你的代码NonNeg = [i for i in I+R if(i >= 0 and isinstance(i,int))]是先把两个列表合并成一个新列表,然后只做了一次遍历,本质上只有一个for循环,所以不满足题目“必须使用两个for循环”的条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:02:34