如何基于movielst与userlst对应列表输出指定格式?现有循环代码有误
问题分析与解决方案
你的代码出现问题主要有两个核心原因:
- 外层循环使用
range(len(userlst)-1),这会直接跳过最后一组用户数据(因为索引从0开始,len(userlst)-1会排除最后一个元素); - 嵌套循环的逻辑错误,你把整个
movielst放在内层循环遍历,导致每个用户组都会输出所有电影,而不是实现电影和用户组的一一对应。
正确的实现方式
我们可以用Python的zip()函数来解决这个问题,它能完美把两个列表的对应元素一一配对,轻松实现你要的对应输出逻辑:
movielst = ['A WALK,DRAGONBALL', 'JAMES BOND,MISSION'] userlst = [[1,20],[6,7]] # 用zip配对两个列表的对应元素,循环取出每一组电影和用户数据 for movie, users in zip(movielst, userlst): print(f"Movies: {movie}") # 将整数用户列表转成逗号分隔的字符串格式 print(f"Users: {','.join(map(str, users))}")
代码细节解释
zip(movielst, userlst)会生成一个迭代器,里面包含('A WALK,DRAGONBALL', [1,20])和('JAMES BOND,MISSION', [6,7])两组配对数据,每次循环就能取出一组对应关系;','.join(map(str, users))先把用户列表里的整数转成字符串类型,再用逗号连接成你需要的格式;- 使用f-string(格式化字符串)让输出代码更简洁易读,也避免了字符串拼接的繁琐。
运行这段代码后,就能得到你期望的输出:
Movies: A WALK,DRAGONBALL Users: 1,20 Movies: JAMES BOND,MISSION Users: 6,7
内容的提问来源于stack exchange,提问作者clink
相关产品推荐
相关产品推荐

