6

我正在使用 Python 3.2.3 版。我试图连续打印一个数字列表,打印命令似乎总是在一行中打印一个数字。

例子

numbers = [1, 2, 3, 4, 5];
for num in numbers:
    print("\t ", num)

输出是:

1

2
...

所需的输出是 1 2 3 4 5

我会很感激你的帮助。Ps 我在这里搜索了网络,大多数问题都与 Python 2.7 有关。

4

4 回答 4

11

使用end参数来抑制(或替换)自动 EOL 输出:

print("\t ", num, end='')

或者,您可能应该只使用:

print('\t'.join(map(str, [1, 2, 3, 4, 5])))
于 2012-10-05T08:56:24.680 回答
9

除了其他答案之外,现在 print 是一个函数,还有一种巧妙的方法:

print(*numbers, sep='\t')

与您的原始代码不同,这不会在第一个数字之前放置一个制表符。如果你想要那个额外的标签,最简单的方法就是在数字之前放一个空白项,这样它就会创建一个额外的标签分隔符:

print('', *numbers, sep='\t')
于 2012-10-06T18:41:06.250 回答
4

您可以使用.join()制表符加入它们:

>>> numbers = [1, 2, 3, 4, 5]
>>> print('\t'.join(map(str, numbers)))
1   2   3   4   5

map(str, numbers)与 相同[str(n) for n in numbers]

于 2012-10-05T08:55:55.913 回答
2

您可以使用sys.stdout.write()而不是print(),它将立即将您的输出发送到输出流,并且没有换行符。

这具有丑陋的缺点和不一次将整个字符串存储在内存中的优点。(join如果您的阵列非常非常大,该方法会使您的计算机崩溃。)

于 2012-10-05T08:58:29.907 回答