我很困惑Python中的insert()
函数是如何工作的。我试图反转一个字符串,我想只要创建一个以相反顺序存储原始字符串字符的列表就可以了。这是我的代码:-在
def reverse(text):
rev = []
l = len(text) - 1
for c in text:
rev.insert(l, c)
l -= 1
return rev
print reverse("Hello")
但是我得到的输出是['o', 'H', 'l', 'e', 'l']
,这显然是错误的。
任何帮助都将不胜感激。我所用的逻辑有问题吗?在
Tags:
若要在列表的开头插入(无论是否为空),
insert()
的第一个参数必须是0
。在最小代码示例
是,您可以在python中的空列表上使用
insert()
。这直接导致代码的问题:如果索引大于列表的长度,则只会追加该项。在您的代码中,第一个插入是
'H'
,位置5;但这只会导致rev = ['H']
。这是'H'
的错误位置!在一种补救办法就是在0位置插入:
^{pr2}$(以防万一:在python中最简单的方法是:
'Hello'[::-1]
。在你的另一种方法是怎样修正的。在
你的方法的问题是你的列表每次迭代都会改变。所以元素的插入位置与列表的当前长度有关。以下是您for循环的基本操作步骤:
如您所见,您的插入位置根据列表的增长而变化。有时}的行为。在
insert
的行为与append()
相似,而有时它又回到{您可以通过使插入位置
^{pr2}$0
来解决此问题。这样,无论列表如何更改,始终将附加到列表的开头:相关问题 更多 >
编程相关推荐