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

如何从嵌套列表提取所有变量?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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:20:44