下面的代码应该是特定字符串中每个字母的两倍(例如'hello'到'hheelllo'),但是函数将“列表索引超出范围”错误返回给所有字符串输入。这个问题显然是由于每次后续插入时字符串长度的不断增加与仅在for语句开头计算的数组长度的常量值之间的冲突造成的。

def double_char(str):
    l = list(str)
    for i in range (0,len(l)+1):
        l.insert(2*i, l[2*i])
    return l

我想知道是否有某种方法可以连续计算每个for语句的列表长度,以便insert命令在保持I的初始范围不变的情况下正常工作。

最佳答案

你为什么不能用simplestr.join()来做这个?示例-

>>> def double_char(s):
...     return ''.join(c+c for c in s)
...
>>> double_char('hello')
'hheelllloo'
>>> double_char('hellobye')
'hheelllloobbyyee'

08-03 23:53