在 Python 中乘以字符串时使用 sep

Using sep when multiplying strings in Python

有人告诉我,在 python 3.x 中,可以在使用乘法重复的字符串之间添加分隔符,例如..

c = "rabble"

print(c * 5, sep = ' | ')

我希望它打印出 "rabble" 5 次,并在每次重复之间打印字符串 |

它一直打印重复的字符串,但没有分隔符。我无法找到有关在这种特定情况下使用 sep 的信息。我做错了什么?

你可以得到你想要的效果,但它与乘法本身并没有太大关系

print()sep 参数在 non-keyword 参数之间提供分隔符 - 例如:

>>> print("spam", "eggs", "ham", sep=" | ")
spam | eggs | ham

您只需将 c 传递给 print() 5 次即可获得您要查找的输出:

>>> c = "rabble"
>>> print(c, c, c, c, c, sep=" | ")
rabble | rabble | rabble | rabble | rabble

...但这很笨拙,如果您事先不知道要 c 出现多少次,那也没用。

为了解决这个问题,您可以使用 argument unpacking – 一种特殊的语法来将列表或其他序列传递给函数,就像其中的项目作为单独的参数传递一样:

>>> s = ["spam", "eggs", "ham"]
>>> print(*s)  # notice the *
spam eggs ham

要获得您要查找的结果,您可以从 c 的 5 个副本动态构建一个列表,并使用参数解包符号传递该列表:

>>> print(*([c] * 5), sep = ' | ')
rabble | rabble | rabble | rabble | rabble

请注意,您是将包含 c 的列表乘以 5,而不是 c 本身。您可能会发现检查 print(*(c * 5), sep = ' | ') 实际做了什么,并尝试找出原因(提示:字符串也是序列)很有帮助。

尝试这样的事情:

print("乌合之众|"*5)