下面是一些代码,它似乎在开始工作,但填充我的持有变量的一半,而剩下的另一个在列表中,我试图从列表元素。特别是最后一个元素。我不知道为什么这不迭代整个传单。帮助?
谢谢森博
def reverse(text):
flist = []
holding = ""
for i in str(text):
flist.append(i)
print(flist)
for i in flist:
holding = holding + flist[-1]
del flist[-1]
print(holding)
print(flist)
reverse("JamesBond")发布于 2017-07-22 04:52:42
而不是在迭代列表时试图修改它。相反,您应该做的就是创建一个新的字符串,并以相反的顺序追加字母。您可以通过使用range向后计数来做到这一点。
def reverse(text):
reverse_string = ""
for i in range(len(text) - 1, -1, -1):
reverse_string += text[i]
print(reverse_string)
reverse("JamesBond")然而,在python中实现这一点的最佳方法是使用切片,在切片中,您可以简单地这样做:
reverse_string = text[::-1]发布于 2017-07-22 05:15:07
正如this comment所说,问题是在迭代列表时要修改它。
基本上,for i in range plist并没有遍历所有的元素,因为当您循环遍历列表时,列表会变得更短。这就是你的列表在迭代的时候发生的事情。
holding plist
d ["J","a","m","e","s","B","o","n","d"]
^
dn ["J","a","m","e","s","B","o","n"]
^
dno ["J","a","m","e","s","B","o"]
^
dnoB ["J","a","m","e","s","B"]
^
dnoBs ["J","a","m","e","s"]
^ #can't loop any further 相反,你能做的就是这样
for i in range(len(plist), -1, -1):
holding = holding + plist[i]或者这个
def reverse(text):
return text[::-1]或者您可以使用内置的reversed函数,比如equaio did。
发布于 2017-07-22 05:19:45
在从字符串创建列表时,可以使用list.comprehension:
我在文本中代表我
您可以通过使用枚举来逆转这种情况,例如:
[ ind的文本-ind-1,枚举(文本)中的I]
https://stackoverflow.com/questions/45250720
复制相似问题