在Python中增加三倍会生成列表而不是字符串



我正在尝试编写一些代码来将单词的每个字母增加三倍。所以你好变成了hhheeelllllllooo等。我可以做到(通过另一种方法(。

我的问题是...为什么以下代码不起作用?它似乎输出了一个列表而不是一个字符串 - 当我测试函数时 - 我不知道为什么。我以为加入可以将列表变成字符串?

def triple(text):
    x=list(text)
    for i in range(0,len(x)):
        x[i]=x[i]+x[i]+x[i]
    ''.join(x)
    return x

''.join(x)不更新 x。你返回 x。返回一个列表。

def triple(text):
    x=list(text)
    for i in range(0,len(x)):
        x[i]=x[i]+x[i]+x[i]
    return ''.join(x)

def triple(text):
    x=list(text)
    for i in range(0,len(x)):
        x[i]=x[i]+x[i]+x[i]
    x = ''.join(x)
    return x

我可以提出两个替代答案:

-> 删除range(len())在迭代列表时对我来说总是很奇怪:

def triple(text):
    x=list(text)
    for i, c in enumerate(x):
        x[i] = c*3
    return ''.join(x)

-> 使用理解:

def triple(text):
    return ''.join(c*3 for c in text)

因为您将列表转换为字符串但没有将其保存到任何变量,并且您正在返回列表 iteslf

def triple(text):
    x = list(text)
    for i in range(0, len(x)):
        x[i] = x[i] + x[i] + x[i]
    x =''.join(x)
    return x

def triple(text):
    x=list(text)
    for i in range(0,len(x)):
        x[i]=x[i]+x[i]+x[i]
    x = ''.join(x)
    return x
def tripleGenerate(myStr):
    triplestr = ""
    for i in range(0,len(myStr)):
        triplestr += (myStr[i]*3)
    return triplestr
  1. myStr基本上是你的字符串,例如:("hello"(
  2. 在此之后,我初始化了一个新的字符串 tripleStr 来存储三元组
  3. 在循环中,我首先通过 do (myStr[i] * 3( 生成三元组,然后将这些三元组连接到我的三元组变量中。

最新更新