Python嵌套列表按指定逐行格式打印的实现问题求解
问题根源
你当前的代码在内层循环中每读取一个子列表元素就直接调用print()输出,而print()函数默认会在每次输出末尾添加换行符,导致每个元素单独占一行。之前调整sep、end参数没生效,是因为你始终在逐元素执行打印逻辑,没有把同一子列表的元素归为同一行输出。
可直接运行的修改方案
方案1:完全保留原有两层while循环结构
只需要调整print的end参数,内层循环打印元素时不换行、用空格分隔,等单个子列表的所有元素遍历完后,再手动打印换行切到下一行:
index = 0 player_list = [['Bruce Wayne', 5, 5, 0, 0, 100, 15],['Jessica Jones', 12, 0, 6, 6, 10, 6],['Johnny Rose', 6, 2, 0, 4, 20, 10],['Gina Linetti', 7, 4, 0, 3, 300, 15],['Buster Bluth', 3, 0, 2, 1, 50, 1]] while index < len(player_list): player_list2 = player_list[index] index += 1 index_1 = 0 while index_1 < len(player_list2): # 同一行元素末尾加空格,不触发换行 print(player_list2[index_1], end=' ') index_1 += 1 # 单个子列表遍历完成后打印换行 print()
这个版本输出的每一行末尾会带一个空格,和你给出的预期输出格式完全匹配。
方案2:更简洁的实现(无需手动维护索引)
利用字符串拼接方法,先把单个子列表的所有元素转为字符串、用空格拼接成完整行内容后,一次性打印整行:
player_list = [['Bruce Wayne', 5, 5, 0, 0, 100, 15],['Jessica Jones', 12, 0, 6, 6, 10, 6],['Johnny Rose', 6, 2, 0, 4, 20, 10],['Gina Linetti', 7, 4, 0, 3, 300, 15],['Buster Bluth', 3, 0, 2, 1, 50, 1]] for player_info in player_list: # 把所有数值元素转成字符串后用空格拼接 print(' '.join(map(str, player_info)))
注意事项
- 子列表中同时包含字符串类型的玩家名和整数类型的属性值,直接拼接会触发类型错误,必须先把所有元素统一转为字符串类型
- 如果逐元素打印同一行内容,必须修改
print的end参数,否则默认的换行符会把每个元素拆到单独行
内容的提问来源于stack exchange,提问作者Mohammad Hassani
相关产品推荐
相关产品推荐

