Python - 多次将字符串连接到自身

时间:2011-06-30 22:41:55

标签: python string

我想加入字符串 my_string = "I am good."这样它应该打印相同的my_string 3次,如 my_string*3在每个完整句子之间留有空格。我该怎么做?类似于str.join(' ',my_string*3)

我知道这是一个基本问题,但我想知道这一点。

提前谢谢你, Sammed

5 个答案:

答案 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