通过不等式比较元素并添加到新列表的for循环问题排查
问题排查与修正
首先,按照你贴出的代码和a、b的取值,正常运行后c应该是[3,7,9],不可能为空。出现c为空的情况,大概率是以下几个原因:
条件符号错误:你代码里写的
<是HTML转义后的字符,Python无法识别,实际运行会直接报错。如果你的真实代码里是把小于号<误写成了其他符号(比如全角的<、大于号>,或者错误的逻辑符号),会导致条件永远不成立,c自然为空。
修正:确保条件语句使用Python标准的小于号<,即:if a[i] < b[i]:a和b的赋值写反:如果你的真实代码里把
a和b的元素搞反了(比如a = [3,7,6,5,4,9,7],b = [1,4,7,5,9,3,5]),那么所有a[i]都不小于b[i],条件永远不满足,c就会是空列表。
修正:检查a和b的赋值是否和你预期的一致。循环范围无效:如果误写了循环范围(比如
range(len(a), len(a)-1)这种反向范围,或者起始/结束值错误),循环根本不会执行,c自然为空。你原本的range(len(a)-1)是正确的(覆盖i=0到5,共6次循环),但要确认是否写错了范围参数。
更简洁的替代写法
可以用列表推导式替代循环,代码更简洁直观,也不容易出错:
a = [1,4,7,5,9,3,5] b = [3,7,6,5,4,9,7] c = [b[i] for i in range(len(a)-1) if a[i] < b[i]]
运行后c的值为[3,7,9],符合你的需求。
内容的提问来源于stack exchange,提问作者John H.
相关产品推荐
相关产品推荐

