在新的一行上打印列表元素

6

我希望能够将数组的元素打印出来,每个元素单独一行,不要有逗号。我正在编写插入排序的函数,虽然它可以正确地工作,但我发现很难正确地打印它们。我编写的代码如下:

#!/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

即在行之间没有额外的空格。点击此处获取详细的问题陈述。


3
print '\n' 会打印出两个新的空行...一个是显式的,另一个是隐式的... - Jon Clements
2
这就是sys.stdout.writeprint之间定义上的区别。 - Malik Brahimi
2个回答

5

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

print '\n'

您将获得两个新行。因此,您可以像这样使用空字符串:print '',或者更好的方法是仅使用print
print

3
单独使用 print 即可... :) - Jon Clements
谢谢。我已经添加了! :) - Bhargav Rao

1
这可能是一个修复 -
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)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接