【问题标题】:altering a print statement更改打印语句
【发布时间】:2023-03-17 21:51:02
【问题描述】:

我无法找到正确的输出。假设我有两个列表,列表 A 和列表 B。

list A = [1,2,3]
list B = [2,3,4]

我想打印如下语句..

Solution A : 1 2 3
Solution B : 2 3 4

到目前为止我所做的是......

    A = config.mList
    B = config.sList
    return 'Solution A: %s \nSolution B: %s' %(A, B) 

这只是打印出来

Solution A: ['17', '4', '8', '11'] 
Solution B: ['9', '18', '13']

【问题讨论】:

  • 用" ".join(A)怎么样?

标签: python list printing


【解决方案1】:

在 Python 2.x 中:

print 'Solution A:', ' '.join(A)

在 Python 3.x 中:

print('Solution A:', *A)

请注意,Python 3.x 中的 print 函数会自动在它提供的对象上调用 str。其中' '.join 要求对象已经是字符串,所以要确保使用:

print ' '.join([str(el) for el in A])

或者:

print ' '.join(map(str, A))

【讨论】:

  • @alko 可能 - 请参阅我对 iCodez 回答的评论
【解决方案2】:

您可以使用str.joinstr.format

>>> A = ['1','2','3']
>>> B = ['2','3','4']
>>> print "Solution A : {}\nSolution B : {}".format(" ".join(A), " ".join(B))
Solution A : 1 2 3
Solution B : 2 3 4
>>>

但请注意,列表中的项目必须是字符串,然后才能使用str.join。在您的示例中,您提供了整数列表。所以,如果你有这些,你可以这样做:

>>> A = [1,2,3]
>>> B = [2,3,4]
>>> print "Solution A : {}\nSolution B : {}".format(" ".join(map(str, A)), " ".join(map(str, B)))
Solution A : 1 2 3
Solution B : 2 3 4
>>>

这是map的参考。

【讨论】:

  • 我想知道他们是否需要strify 他们...当前输出和示例输入在类型方面似乎相互矛盾
  • 感谢@iCodez 提供代码。我以前从未使用过 {} 和格式。但是格式是否用于将对象放置在 {} 内?
  • @user2933041 - 是的,这正是正在发生的事情。例如,"{}{}{}".format(1, 2, 3) 将产生 "123"
  • @JonClements - 嗯,我也不确定。我会给他两个答案。
【解决方案3】:

使用 join 函数将列表转换为字符串,然后对其进行格式化。

' '.join(A) #  "1 2 3"

【讨论】:

    【解决方案4】:

    您可以设置一个小函数将项目格式化为文本字符串,格式化时可以避免重复:

    def textlist(mylist):
        return ' '.join(map(str, mylist))
    
    print "Solution A: {0} \nSolution B: {1}".format(textlist(A), textlist(B))
    

    【讨论】:

    • 注意:在 Python 2.7+ 中,可以省略大括号内的数字。