如何提取并打印嵌套列表内部所有子列表中的最大数值
问题原因
- 你调用
max(list)时是直接对存储子列表的外层列表取最大值,Python中列表间的大小比较规则为依次对比同位置元素,因此会返回首个元素最大的子列表对象[1231, 52, 22],而非所有元素的最大值 - 你把
max()调用放在了双层循环内部,总循环次数为所有子列表的元素总数(示例中是3+1+3=7次),因此会重复打印7次同样的子列表结果 - 额外提示:不建议用
list作为变量名,会覆盖Python内置的list类型,可能引发后续逻辑异常
修复方案1:修改原有循环逻辑
my_list = [ [1,3,251], [2], [1231,52,22] ] # 如果存在负数场景,可以把初始值设为float('-inf') max_num = 0 for sub_list in my_list: for num in sub_list: if num > max_num: max_num = num print(max_num)
运行输出结果为1231,符合预期。
修复方案2:更简洁的写法(无需手动维护最大值变量)
方法A:展开嵌套列表后直接取最大值
my_list = [ [1,3,251], [2], [1231,52,22] ] max_num = max(num for sub_list in my_list for num in sub_list) print(max_num)
方法B:先取每个子列表的最大值,再取总最大值
my_list = [ [1,3,251], [2], [1231,52,22] ] max_num = max(max(sub_list) for sub_list in my_list) print(max_num)
内容的提问来源于stack exchange,提问作者rababar17
相关产品推荐
相关产品推荐

