Python中如何用双层zip与嵌套循环实现指定列表输出格式?
问题解决:按对应关系打印国家、城市与数字
原始数据
mylist1 = ["peru", "germany", "japan"] mylist2 = [["lima","cusco"], ["berlin","munich"], ["tokyo"]] mylist3=[[1,2],[3,4],[5]]
预期输出
peru lima 1 cusco 2 germany berlin 3 munich 4 japan tokyo 5
问题分析
你之前的两次尝试都没命中核心逻辑:
- 第一次分开循环城市和数字,导致所有城市打印完才输出数字,破坏了城市与数字的对应关系;
- 第二次的双层
zip结构错误,应该在每个国家的内部对城市列表和数字列表做配对,而非在外层打包时就嵌套zip。
正确实现代码
# 按国家维度打包三个列表的数据 country_data = list(zip(mylist1, mylist2, mylist3)) # 第一层循环:遍历每个国家的完整信息 for country, cities, nums in country_data: print(country) # 第二层循环:同时遍历当前国家的城市和对应数字,实现配对打印 for city, num in zip(cities, nums): print(city) print(num) # 每个国家的内容打印完成后,输出空行分隔 print()
逻辑说明
- 外层
zip(mylist1, mylist2, mylist3)将每个国家与其对应的城市列表、数字列表打包成一组,确保国家和下属数据的对应关系; - 内层
zip(cities, nums)把当前国家的每个城市和对应的数字一一配对,循环打印就能实现“城市→数字”的连续输出; - 最后添加
print()实现不同国家内容之间的空行分隔,完全匹配预期格式。
内容的提问来源于stack exchange,提问作者christian ortiz
相关产品推荐
相关产品推荐

