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

Python:从含字符串与整数的混合列表中查找最大整数

解决混合类型列表中获取最大整数的问题

这个报错太典型啦——max()函数会尝试对比列表里的每一个元素,但字符串和整数之间没法用>运算符比较,所以直接抛出了TypeError。下面给你几个简单好用的解决思路:

方法1:用生成器筛选整数后求最大值

这是最直观的方式,先把列表里所有整数挑出来,再用max()计算:

mixed_list = ['filename1', 1696, 'filename2', 5809, ...]
max_int = max(num for num in mixed_list if isinstance(num, int))
print(max_int)  # 会输出5809

这里用了生成器表达式(比普通列表推导式更省内存),通过isinstance(num, int)筛选出所有整数,再对筛选后的结果求最大值。

方法2:用filter()函数实现过滤

和上面思路一致,只是换用filter()来做筛选:

mixed_list = ['filename1', 1696, 'filename2', 5809, ...]
max_int = max(filter(lambda x: isinstance(x, int), mixed_list))
print(max_int)

filter()会把符合lambda条件的元素保留下来,再传给max()计算最大值。

方法3:处理列表中没有整数的边界情况

如果你的列表有可能完全没有整数,直接用max()会抛出ValueError,可以加个默认值来避免崩溃:

mixed_list = ['filename1', 'filename2']
# 生成器写法
max_int = max((num for num in mixed_list if isinstance(num, int)), default=0)
# filter写法
max_int = max(filter(lambda x: isinstance(x, int), mixed_list), default=0)
print(max_int)  # 输出0,你可以根据需求改成其他默认值,比如None

这样哪怕列表里没有整数,程序也能正常运行,返回你设定的默认值。

另外提一句:如果列表里还有浮点数这类数值类型,你可以把isinstance(num, int)改成isinstance(num, (int, float))来同时包含,但你的需求是找最大整数,所以专注筛选int类型就够啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:37:42