当前位置: 首页 > 面试题库 >

在Python 3中打印以空格分隔的元素的列表

冷正信
2023-03-14
问题内容

我有一个L元素列表,例如自然数。我想将它们打印在一行中,并用一个 空格 作为分隔符。但是我 不想
在列表的最后一个元素之后(或第一个元素之前) 一个空格。

在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功能是否支持我正在寻找的行为?


问题答案:

您可以将列表作为单独的参数应用:

print(*L)

print()注意将每个元素转换为字符串。您可以一如既往地通过设置sep关键字参数来控制分隔符:

>>> L = [1, 2, 3, 4, 5]
>>> print(*L)
1 2 3 4 5
>>> print(*L, sep=', ')
1, 2, 3, 4, 5
>>> print(*L, sep=' -> ')
1 -> 2 -> 3 -> 4 -> 5

除非您需要连接字符串用于其他用途,否则这是最简单的方法。否则,请使用str.join()

joined_string = ' '.join([str(v) for v in L])
print(joined_string)
# do other things with joined_string

请注意,对于L!中的任何非字符串值,这都需要手动转换为字符串。



 类似资料:
  • 问题内容: 这是我面临的常见任务:将一个空格分隔的列表分为一个 head 元素和一个包含 tail 元素的数组。例如,给定以下字符串: 我们想要: ..在两个不同的变量中。第一个变量应为字符串,第二个变量为数组。我正在寻找一种做到这一点的 优雅 方法(最好是在Java中)。 问题答案: 对于某些高雅的价值观: 我想不出一种用更少的代码来做到这一点的方法…

  • 问题内容: 我有一个文件,其中包含任意数量的非对齐列,并用空格分隔。 我想对齐文件的列。 我看过该命令,它似乎不合适。 我可以编写一个AWK脚本,但似乎应该存在一个更明显的命令。 问题答案: 您可能希望该命令(通常用于生成基本表格输出): 从手册页: 确定输入包含的列数并创建一个表。默认情况下,列用空格定界,或使用–output-separator选项提供的字符定界。表输出对于漂亮打印很有用。 还

  • 我在下面写的代码保存了进程在中拥有cpu时的时间戳。如果进程当时拥有CPU。例如,如果列表如下所示: 控制台的输出应该是这样的: 我怎么能这么做呢?这就是我迄今为止所做的

  • 然后在main方法中,我尝试创建一个列表并打印出其中的元素。 没有语法错误,但当我尝试运行上面的代码时,终端不会返回任何内容。

  • 我在下面写的代码保存了进程在中拥有cpu时的时间戳。如果进程当时拥有CPU。例如,如果列表如下所示: 控制台的输出应该是这样的: 我怎么能这么做呢?这就是我迄今为止所做的

  • 问题内容: 如何格式化列表以在单独的行上打印每个元素?例如,我有: 我希望格式化列表,以便它像这样打印: 因此\ n,方括号,逗号和’‘被删除,每个元素都打印在单独的行上,谢谢 问题答案: 您可以使用一个简单的循环:-