在单独的行中打印列表列表

新手上路,请多包涵

我有一个列表列表:

 a = [[1, 3, 4], [2, 5, 7]]

我想要以下格式的输出:

 1 3 4
2 5 7

我试过以下方式,但输出不是预期的方式:

 for i in a:
    for j in i:
        print(j, sep=' ')

输出:

 1
3
4
2
5
7

在将打印调用更改为使用 end

 for i in a:
    for j in i:
        print(j, end = ' ')

输出:

 1 3 4 2 5 7

有任何想法吗?

原文由 skorada 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 464
2 个回答

遍历原始列表中的每个子列表,并使用 * 在打印调用中将其 _解压缩_:

 a = [[1, 3, 4], [2, 5, 7]]
for s in a:
    print(*s)

分隔默认设置为 ' ' 因此无需明确提供。这打印:

 1 3 4
2 5 7

在您的方法中,您正在迭代每个子列表中的每个元素并单独打印。通过使用 print(*s) 你在打印调用中 解压 列表,这基本上转化为:

 print(1, 3, 4)  # for s = [1, 3, 4]
print(2, 5, 7)  # for s = [2, 5, 7]

原文由 Dimitris Fasarakis Hilliard 发布,翻译遵循 CC BY-SA 4.0 许可协议

一条线:

 print('\n'.join(' '.join(map(str,sl)) for sl in l))

解释:

您可以使用 join 函数将 list 转换为 str

 l = ['1','2','3']
' '.join(l) # will give you a next string: '1 2 3'
'.'.join(l) # and it will give you '1.2.3'

所以,如果你想要换行符,你应该使用换行符。

但是 join 只接受字符串列表。要将事物列表转换为字符串列表,您可以为列表中的每个项目应用 str 函数:

 l = [1,2,3]
' '.join(map(str, l)) # will return string '1 2 3'

我们将此构造应用于列表中的每个子列表 sl l

原文由 ailin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题