如何从嵌套列表提取所有变量?Python嵌套列表数据提取求助
问题分析与解决方案
你的问题核心出在函数内的return语句位置错误——它被放在了for循环内部,导致循环刚执行第一次迭代就直接退出函数,后续的城市和数值根本没机会被处理,自然只能拿到第一个结果。
下面给你几种实用的解决方法:
方法1:修改函数,收集所有结果后统一返回
把每一组处理后的城市和数值都存入列表,等循环完全执行完毕后再返回整个结果集合:
def sortfunction(alpha): processed_results = [] for city, number in alpha: # 格式化城市名(居中占30位)和数值(左对齐占5位) formatted_city = '{:^30}'.format(city) formatted_number = '{:<5}'.format(number) # 将格式化后的结果加入列表 processed_results.append((formatted_city, formatted_number)) # 循环结束后返回所有处理结果 return processed_results
调用示例:
b = [['AKRON', 65.5574], ['ALTON', 69.6722]] all_cities = sortfunction(b) # 遍历打印所有结果 for item in all_cities: print(item)
执行后会输出:
(' AKRON ', '65.5574') (' ALTON ', '69.6722')
方法2:直接遍历列表处理(无需封装函数)
如果不需要复用逻辑,直接遍历原列表处理输出会更简洁:
b = [['AKRON', 65.5574], ['ALTON', 69.6722]] for city, number in b: formatted_city = '{:^30}'.format(city) formatted_number = '{:<5}'.format(number) print(formatted_city, formatted_number)
方法3:用列表推导式简化代码
追求代码简洁性的话,可以用列表推导式一行完成所有格式化操作:
b = [['AKRON', 65.5574], ['ALTON', 69.6722]] formatted_data = [('{:^30}'.format(city), '{:<5}'.format(number)) for city, number in b] print(formatted_data)
关键提醒
return语句会立即终止函数执行,所以绝对不能放在循环内部(除非你确实只需要第一个元素的结果)- 要处理所有元素,要么提前收集所有结果再统一返回,要么在循环内部直接完成输出/其他业务操作
内容的提问来源于stack exchange,提问作者Code Vanessa
相关产品推荐
相关产品推荐

