我是编程新手,正在尝试编写自己的反向函数。没有按计划进行

2024-09-28 13:14:48 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一段代码,一开始似乎很管用,但将我的holding变量填充为一半,而将另一个变量留在我试图从中给出列表元素的列表中。最后一个元素。我不知道为什么这不是遍历整个flist。救命啊?你知道吗

谢谢 森博尔

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")

Tags: 代码textin元素列表fordefreverse
3条回答

正如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。你知道吗

从字符串创建列表时,可以使用列表.理解地址:

[文本中i代表i]

您可以通过使用enumerate来逆转这种情况,例如:

[text[-ind-1]表示ind,i在枚举中(text)]

而不是在遍历列表时尝试修改列表。相反,您应该做的只是创建一个新字符串,并以相反的顺序附加字母。您可以使用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]

相关问题 更多 >

    热门问题