为何嵌套列表迭代仅处理首行?预期多行格式化输出未实现
问题原因与解决方案
核心问题:输入解析错误
你直接用split(',')处理嵌套列表格式的输入,完全破坏了原有的子列表结构。比如输入[[1,2,3], [4,5], [6,7,8,9]]按逗号分割后,得到的是:
['[[1', '2', '3]', ' [4', '5]', ' [6', '7', '8', '9]]']
这些元素无法正确分割出子列表的数字,导致mult_table的后续行并不是你期望的[4,5]、[6,7,8,9],而是单个元素的列表(比如[2]、[3]等),自然不会插入分隔符,最终输出无分隔的数字。
另外你的格式化逻辑依赖初始的length值,虽然在输入正确时不会影响结果,但手动插入元素的方式也不够简洁。
修正方案
使用ast.literal_eval安全解析嵌套列表输入,再用join方法简化格式化:
import ast user_input = input() # 直接将输入字符串解析为Python嵌套列表 mult_table = ast.literal_eval(user_input) for row in mult_table: # 把数字转字符串后用' | '连接成一行 print(' | '.join(map(str, row)))
效果验证
输入[[1,2,3], [4,5], [6,7,8,9]],输出完全符合预期:
1 | 2 | 3 4 | 5 6 | 7 | 8 | 9
内容的提问来源于stack exchange,提问作者lora hopkins
相关产品推荐
相关产品推荐

