在 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)
有人告诉我,在 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)