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

Python中如何筛选数值列表里以数字3结尾的元素

解决列表筛选以3结尾元素的问题

首先得指出你代码里的问题:第二个循环的索引逻辑错啦!你在遍历output_list时,i本身就是列表里的字符串元素,要判断它的最后一位,应该直接用i[-1](Python的负索引可以直接取最后一个元素,比len(i)-1更简洁),而不是写output_list[len(i)-1]——这个写法是拿字符串的长度当索引去取output_list里的元素,完全偏离了判断当前元素结尾的逻辑。

而且你当前的代码只是打印整个列表,没有把符合条件的元素收集到最终结果里,其实我们可以把转字符串和筛选的步骤合并,不用先单独转整个列表,一步完成更高效。

修正后的完整代码

x = [12, 43, 4, 1, 6, 343, 10, 34, 12, 93, 783, 330, 896, 1, 55]
output_list = []
for num in x:
    # 将整数转为字符串,取最后一位判断是否为'3'
    if str(num)[-1] == '3':
        output_list.append(num)  # 若需要字符串结果,可改为append(str(num))

print(output_list)

运行结果

[43, 343, 93, 783]

关键步骤解释

  • 直接遍历原列表的整数元素,无需提前把整个列表转成字符串列表,节省内存开销
  • str(num)[-1]:利用Python负索引特性,快速获取字符串最后一位,比计算长度再索引的写法更直观
  • 判断通过后,将原整数添加到结果列表(如果需求是保留字符串形式,替换成append(str(num))即可)

你的错误代码分析

你之前的第二个循环:

for i in output_list:
    if(output_list[len(i) -1]=='3'):
        print(output_list)

这里的核心问题:

  1. output_list[len(i)-1]逻辑错误:len(i)是当前字符串的长度,比如i是'12'时长度为2,len(i)-1是1,此时output_list[1]取的是列表里的第二个元素'43',根本不是在判断当前i的结尾
  2. 就算判断逻辑正确,你打印的是整个output_list,没有把符合条件的元素收集到目标列表里

另外,也可以用列表推导式简化代码,一行就能完成:

x = [12, 43, 4, 1, 6, 343, 10, 34, 12, 93, 783, 330, 896, 1, 55]
output_list = [num for num in x if str(num)[-1] == '3']
print(output_list)

这个写法和循环版本效果完全一致,更简洁优雅。

内容的提问来源于stack exchange,提问作者Nueva Generacion HMG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:38:11