首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我对编程很陌生,并且正在尝试编写我自己的反向函数。不按计划进行

我对编程很陌生,并且正在尝试编写我自己的反向函数。不按计划进行
EN

Stack Overflow用户
提问于 2017-07-22 04:35:26
回答 5查看 57关注 0票数 0

下面是一些代码,它似乎在开始工作,但填充我的持有变量的一半,而剩下的另一个在列表中,我试图从列表元素。特别是最后一个元素。我不知道为什么这不迭代整个传单。帮助?

谢谢森博

代码语言:javascript
复制
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")
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-07-22 04:52:42

而不是在迭代列表时试图修改它。相反,您应该做的就是创建一个新的字符串,并以相反的顺序追加字母。您可以通过使用range向后计数来做到这一点。

代码语言:javascript
复制
def reverse(text):
    reverse_string = ""
    for i in range(len(text) - 1, -1, -1):
        reverse_string += text[i]
    print(reverse_string)
reverse("JamesBond")

然而,在python中实现这一点的最佳方法是使用切片,在切片中,您可以简单地这样做:

代码语言:javascript
复制
reverse_string = text[::-1]
票数 1
EN

Stack Overflow用户

发布于 2017-07-22 05:15:07

正如this comment所说,问题是在迭代列表时要修改它。

基本上,for i in range plist并没有遍历所有的元素,因为当您循环遍历列表时,列表会变得更短。这就是你的列表在迭代的时候发生的事情。

代码语言:javascript
复制
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  

相反,你能做的就是这样

代码语言:javascript
复制
for i in range(len(plist), -1, -1):
    holding = holding + plist[i]

或者这个

代码语言:javascript
复制
def reverse(text):
    return text[::-1]

或者您可以使用内置的reversed函数,比如equaio did

票数 1
EN

Stack Overflow用户

发布于 2017-07-22 05:19:45

在从字符串创建列表时,可以使用list.comprehension:

我在文本中代表我

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

[ ind的文本-ind-1,枚举(文本)中的I]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45250720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档