以下代码应该将特定字符串中的每个字母加倍(例如' 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的初始范围固定。
答案 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