我有一个元素列表L,例如自然数。我想用一个空格作为分隔符在一行上打印它们。但我不希望在列表的最后一个元素后(或第一个元素前)有空格。
在Python 2中,可以使用以下代码轻松实现这一点。print语句的实现(我必须承认有些神秘)避免在换行符之前打印额外的空格。
然而,在Python 3中,使用
这是一个相当不错的解决方案,但与 Python 2 代码相比,我发现它很反直觉,而且肯定更慢。此外,我知道我可以自己选择是否打印空格,比如:
在Python 2中,可以使用以下代码轻松实现这一点。print语句的实现(我必须承认有些神秘)避免在换行符之前打印额外的空格。
L = [1, 2, 3, 4, 5]
for x in L:
print x,
print
然而,在Python 3中,使用
print
函数的(据说)等价代码似乎在最后一个数字后面产生了一个空格:L = [1, 2, 3, 4, 5]
for x in L:
print(x, end=" ")
print()
当然,我这个问题也有简单的答案。我知道可以使用字符串连接:
L = [1, 2, 3, 4, 5]
print(" ".join(str(x) for x in L))
这是一个相当不错的解决方案,但与 Python 2 代码相比,我发现它很反直觉,而且肯定更慢。此外,我知道我可以自己选择是否打印空格,比如:
L = [1, 2, 3, 4, 5]
for i, x in enumerate(L):
print(" " if i>0 else "", x, sep="", end="")
print()
但是,在Python 2中,我拥有的功能比这个更好。
所以,我的问题是,在Python 3中,我是否遗漏了什么? print
函数是否支持我正在寻找的行为?
join
解决方案很糟糕,因为:(1)它明确使用了str
,我认为这很丑陋和反直觉,最重要的是(2)它首先构造一个字符串,然后再打印它,如果列表很长,这可能是个坏主意。 - nickie