我有这段代码:
>>> for i in xrange(20):
... print 'a',
...
a a a a a a a a a a a a a a a a a a a a
我想要输出 'a'
,不要像这样带上 ' '
:aaaaaaaaaaaaaaaaaaaa
是否可能?
我有这段代码:
>>> for i in xrange(20):
... print 'a',
...
a a a a a a a a a a a a a a a a a a a a
我想要输出 'a'
,不要像这样带上 ' '
:aaaaaaaaaaaaaaaaaaaa
是否可能?
有多种方法可以实现您的结果。如果您只是想要解决方案,请像@Ant所提到的那样使用字符串乘法。这仅在每个print
语句打印相同的字符串时才有效。请注意,它适用于任何长度的字符串乘法(例如,'foo' * 20
有效)。
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
print
。请注意,使用+=
进行字符串连接现在与您正在连接的字符串大小成线性关系,因此这将很快。>>> for i in xrange(20):
... s += 'a'
...
>>> print s
aaaaaaaaaaaaaaaaaaaa
或者您可以更直接地使用sys.stdout.write(), 这是print
的一个包装器。这将仅写入您提供的原始字符串,没有任何格式。请注意,即使在20个a
的末尾也不会打印换行符。
>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
aaaaaaaaaaaaaaaaaaaa>>>
print
语句更改为print()函数,允许您设置end
参数。在>=2.6中,您可以通过从__future__
导入来使用它。但是,对于那些从未使用过3.x的人来说,我会避免在任何严肃的2.x代码中使用它,因为这可能会有点令人困惑。然而,它应该让您尝到3.x带来的一些好处。>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
"".join(...)
。 - Katriel+=
进行字符串连接对于单个字符的连接是一个常数时间操作。 - moinudin从PEP 3105:将打印作为函数在Python 2.6中的新功能文档中:
>>> from __future__ import print_function
>>> print('a', end='')
显然,这只适用于Python 3.0或更高版本(或者在开头使用from __future__ import print_function
的2.6+版本)。在Python 3.0中,print
语句被删除并默认变为print()
函数。
print
语句之间向标准输出打印一个空字符串来抑制空格。>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
然而,一种更加简洁的解决方案是首先构建您想要打印的整个字符串,然后使用单个print
语句输出它。
sys.stdout.write()
更加方便。 但是,我想表明向stdout写入空字符串会禁止使用print
写入的元素之间的空格,这在类似的情况下可能很有用。 - Pär Wieslander'\b'
):for i in xrange(20):
print '\ba',
结果:
aaaaaaaaaaaaaaaaaaaa
Python 3.x:
for i in range(20):
print('a', end='')
Python 2.6或2.7:
from __future__ import print_function
for i in xrange(20):
print('a', end='')
如果你希望它们一个接一个地显示,你可以这样做:
import time
import sys
for i in range(20):
sys.stdout.write('a')
sys.stdout.flush()
time.sleep(0.5)
sys.stdout.flush()
的作用是强制每次运行循环时写入字符。
顺便提一下:
打印的时间复杂度是O(1),但是构建字符串再打印的时间复杂度是O(n),其中n是字符串中字符的总数。所以,虽然构建字符串更加“干净”,但不是最有效的方法。
我会这样做:
from sys import stdout
printf = stdout.write
printf("Hello,")
printf("World!")
printf(str(2) + " " + str(4))
您是指没有什么?
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
?
这真的非常简单。
对于Python 3+版本,您只需编写以下代码即可:
for i in range(20):
print('a',end='')
只需将循环转换为以下代码,无需担心其他事项。
"".join("a" for i in xrange(20))
。(它比仅使用"a" * 20
更加灵活,我认为这只是一个简化的例子)。 - Thomas K