我有这样的代码:
>>> 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
有可能吗?
发布于 2010-12-21 20:21:35
有很多方法可以达到你的效果。如果你只是想要一个针对你的案例的解决方案,就像@Ant提到的那样,使用string multiplication。只有当您的每条print
语句打印相同的字符串时,这才能起作用。请注意,它适用于任意长度字符串的乘法(例如'foo' * 20
works)。
>>> 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>>>
Python3将print
语句更改为print() function,这允许您设置end
参数。您可以通过从__future__
导入在>=2.6中使用它。不过,我会在任何严肃的2.x代码中避免这一点,因为对于那些从未使用过3.x的人来说,这会让人有点困惑。然而,它应该会让你尝到3.x带来的一些好处。
>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
发布于 2010-12-21 20:17:40
从What’s New in Python 2.6文档中的PEP 3105: print As a Function:
>>> from __future__ import print_function
>>> print('a', end='')
显然,这只适用于Python3.0或更高版本(或开头带有from __future__ import print_function
的2.6+ )。在Python3.0中,print
语句被删除,默认情况下成为print()
函数。
发布于 2010-12-21 20:16:04
您可以通过在print
语句之间向标准输出打印一个空字符串来抑制空格。
>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
但是,一种更简洁的解决方案是首先构建要打印的整个字符串,然后用一条print
语句输出它。
https://stackoverflow.com/questions/4499073
复制相似问题