重新计算循环内的字符串长度

时间:2015-08-04 01:39:39

标签: python arrays string python-3.x for-loop

以下代码应该将特定字符串中的每个字母加倍(例如' hello' to' hheelllloo')但该函数返回"列表索引范围"所有字符串输入都出错。问题显然是由字符串与每个后续插入的不断增加的长度和仅在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语句连续计算列表的长度,这样插入命令将正常运行,同时仍保持i的初始范围固定。

3 个答案:

答案 0 :(得分:3)

为什么你不能使用简单的str.join()呢?示例 -

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

答案 1 :(得分:1)

你可以使用一个空字符串,并附加到它:

>>>def double_char(word):
...    l = ""
...    for i in word:
...        l += i*2
...    return l

>>> double_char("hello")
'hheelllloo'

答案 2 :(得分:0)

阿南德的回答可能是最诡异的。如果你是python的新手,可读性也很重要。这也有用:

def doubleString(word):
    newWord = ""
    for letter in word:
        newWord += (2 * letter)
    return newWord