【问题标题】:Print list elements on new line在新行上打印列表元素
【发布时间】:2015-06-07 22:21:31
【问题描述】:

我希望在单独的行上打印数组的元素,不带逗号。我正在编写一个用于插入排序的函数。虽然它工作正常,但我发现正确打印它们很棘手。我写的代码是:

#!/bin/python
def insertionSort(ar):    
    newNo = ar[-1]
    for i in range(0, m-1):
        if(newNo < ar[m-i-1]):
            ar[m-i] = ar[m-i-1]
            for e in ar:
                print e,
            print '\n'
    ar[m-i-1] = newNo
    for f in ar: print f,

m = input()
ar = [int(i) for i in raw_input().strip().split()]
insertionSort(ar)

我得到的输出是:

2 4 6 8 8 

2 4 6 6 8 

2 4 4 6 8 

2 3 4 6 8

我应该得到以下输出以使代码通过测试用例:

2 4 6 8 8
2 4 6 6 8
2 4 4 6 8
2 3 4 6 8

即行之间没有额外的空间。点击here查看详细问题说明。

【问题讨论】:

  • print '\n' 将打印两个新行...一个显式,另一个隐式...
  • 这是sys.stdout.writeprint 之间的决定性区别。

标签: python list python-2.7


【解决方案1】:

print 语句自动追加一个新行,所以如果你使用

print '\n'

你会得到两条新线。因此,您可以使用 print '' 中的空字符串,或者更好的方法是单独使用 print

print

【讨论】:

  • print 本身就很好...... :)
  • 谢谢。我补充说! :)
【解决方案2】:

这可能是一个修复 -

def insertionSort(ar):    
newNo = ar[-1]
for i in range(0, m-1):
    if(newNo < ar[m-i-1]):
        ar[m-i] = ar[m-i-1]
        for e in ar:
            print e,
        print 
ar[m-i-1] = newNo
for f in ar: print f,

m = input()
ar = [int(i) for i in raw_input().strip().split()]
insertionSort(ar)

编辑 - 好的! ^ 有人已经提到过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多