Python中的三倍产生列表而不是字符串

时间:2019-06-19 11:34:50

标签: python python-3.x

我正在尝试编写一些代码以将一个单词的每个字母增加三倍。这样,您好就变成了hhheeellllllooo等。我可以(通过另一种方法)做到这一点。

我的问题是...为什么以下代码不起作用?似乎是输出列表而不是字符串-当我测试函数时-我不知道为什么。我以为join可以将列表转换为字符串?

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

3 个答案:

答案 0 :(得分:7)

''.join(x)不会更新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)

答案 1 :(得分:2)

因为您将列表转换为字符串,但没有将其保存到任何变量,而是要返回列表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

答案 2 :(得分:0)

def tripleGenerate(myStr):
    triplestr = ""
    for i in range(0,len(myStr)):
        triplestr += (myStr[i]*3)

    return triplestr
  1. myStr基本上是您的字符串,例如:(“ hello”)
  2. 此后,我初始化了一个用于存储三元组的新字符串TripleStr
  3. 在循环内部,我首先通过执行(myStr [i] * 3)来生成三元组,然后将这些三元组连接到我的Triplestr变量中。