我想加入字符串
my_string = "I am good."
这样它应该打印相同的my_string 3次,如
my_string*3
在每个完整句子之间留有空格。我该怎么做?类似于str.join(' ',my_string*3)
?
我知道这是一个基本问题,但我想知道这一点。
提前谢谢你, Sammed
答案 0 :(得分:13)
你非常接近。试试这个:
>>> my_string = "I am good."
>>> " ".join([my_string]*3)
'I am good. I am good. I am good.'
您需要[my_string]*3
而不是my_string*3
,因为您需要一个包含字符串三次的列表(然后可以加入)而不是包含该消息三次的单个大字符串。
此外," ".join(a)
是str.join(" ", a)
的缩写。
答案 1 :(得分:1)
这应该有效:
" ".join((my_string,) * 3)
答案 2 :(得分:1)
" ".join([my_string for i in range(3)]
答案 3 :(得分:0)
或者你可以利用这样一个事实,即乘以一个字符串连接它的副本:在字符串的末尾添加一个空格,并在不使用join
的情况下相乘。
>>> my_string = "I am good."
>>> (my_string+' ')*3
'I am good. I am good. I am good. '
答案 4 :(得分:0)
我进行了性能检查,以了解不同方法之间如何竞争。
import time
def forLoop(s):
start = time.time()
z = ""
for i in range(ITERS):
z += s
return time.time()-start
def listJoin(s):
start = time.time()
"".join([s]*ITERS)
return time.time()-start
def strMultiply(s):
start = time.time()
s*ITERS
return time.time()-start
ITERS = 10000
my_string = "I am good."
a, b, c = 0, 0, 0
for i in range(ITERS):
a += forLoop(my_string)
b += listJoin(my_string)
c += strMultiply(my_string)
print("For loop:", a)
print("List join:", b)
print("String multiplication:", c)
输出:
For loop: 5.720043182373047
List join: 0.8931441307067871
String multiplication: 0.025591611862182617