【问题标题】:Print list in specific way in Python在 Python 中以特定方式打印列表
【发布时间】:2014-11-14 19:03:15
【问题描述】:

我有一个这样的列表

list=[[2,3],[3,4]] 

我想像这样打印列表中的每个列表:
1:2 3、2:3 4
所以第一部分是列表在列表中的位置,然后是列表中的数字。 到目前为止,我已经尝试了一个 for 循环和一个打印行。 for 循环有效,但在新行中打印每个列表。另一个打印语句看起来像这样,但它根本不起作用,我不知道如何修复它。

print('{0:}:'.format(list[0]),' '.join([', '.join([str(e) for e in slist]) for slist in list]))

对于这个列表看起来像这样list = [[1,2,3],[2,3,4]] 所以每个列表中的第一个元素是列表的索引(从 1 开始) 我使用 Python3

【问题讨论】:

  • 使用列表变量名是不好的做法
  • 这里只是为了问题。不过谢谢!

标签: python list printing format


【解决方案1】:
l =[[2,3],[3,4]]
print(", ".join(["{}: {}".format(ind," ".join(map(str,x))) for ind, x in enumerate(l,1)]))
1: 2 3, 2: 3 4

enumerate(l,1) 跟踪子列表的索引,我们将1 作为第二个参数传递以在1 而不是`0 开始索引。

" ".join(map(str,x) 将所有整数映射到字符串,我们使用str.format 在每个索引之前添加:", ".join 用逗号分隔每个部分。

【讨论】:

  • @iCodez,大声笑是的,我想是的,似乎没有任何简单的方法可以做到这一点。不过我会添加一些解释:)。
【解决方案2】:

您可以在列表理解中使用join()enumerate()

>>> l=[[2,3],[3,4]]
>>> ','.join(['{}:{}'.format(i,' '.join(str(t) for t in j)) for i,j in enumerate(l,1)])
'1:2 3,2:3 4'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多