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

Python I';我是编程新手,正在尝试编写自己的反向函数。没有按计划进行,python,Python,下面是一段代码,它似乎在一开始就可以工作,但在我试图给出列表元素的列表中留下另一个元素的同时,用一半填充了我的holding变量。最后一个元素是明确的。我不知道为什么这不是在整个flist中迭代。帮忙 谢谢 森博尔 而不是在迭代列表时尝试修改列表。相反,您应该做的只是创建一个新字符串,并以相反的顺序追加字母。您可以使用范围反向计数来完成此操作: def reverse(text): reverse_string = "" for i in range(len(text) - 1,

下面是一段代码,它似乎在一开始就可以工作,但在我试图给出列表元素的列表中留下另一个元素的同时,用一半填充了我的holding变量。最后一个元素是明确的。我不知道为什么这不是在整个flist中迭代。帮忙

谢谢 森博尔


而不是在迭代列表时尝试修改列表。相反,您应该做的只是创建一个新字符串,并以相反的顺序追加字母。您可以使用
范围
反向计数来完成此操作:

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]

而不是在迭代列表时尝试修改列表。相反,您应该做的只是创建一个新字符串,并以相反的顺序追加字母。您可以使用
范围
反向计数来完成此操作:

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]
如前所述,问题是在迭代列表时修改列表

基本上,
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]
或者您可以使用内置的
反向
函数,如。

如前所述,问题在于您在迭代列表时正在修改列表

基本上,
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]

或者,您可以使用内置的
反向
功能,例如。

从字符串创建列表时,您可以使用列表。理解:

[文本中的i代表i]

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


[text[-ind-1]对于ind,i在枚举(text)]

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

[文本中的i代表i]

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


[text[-ind-1]对于ind,我在enumerate(text)]

据我所知,您希望使用字符串“JamesBond”并将其反转为“dnoBsemaJ”。我对Python也非常陌生。我尝试了一下你的函数,得出了以下结论。它可能不是最漂亮的,但它确实颠倒了文本

def reverse(_string):
    _stringLen = len(_string)
    i = _stringLen - 1
    _newstring = ""
    while i >= 0:
        _newstring = _newstring + _string[i]
        i -= 1
    return _newstring


print reverse("JamesBond")


打印出:dnoBsemaJ据我所知,您希望将字符串“JamesBond”反转为“dnoBsemaJ”。我对Python也非常陌生。我尝试了一下你的函数,得出了以下结论。它可能不是最漂亮的,但它确实颠倒了文本

def reverse(_string):
    _stringLen = len(_string)
    i = _stringLen - 1
    _newstring = ""
    while i >= 0:
        _newstring = _newstring + _string[i]
        i -= 1
    return _newstring


print reverse("JamesBond")


打印输出:dnoBsemaJ拼接可以帮助您,除非您确实希望编写算法进行反转

>>> k = 'JamesBond'
>>> rev_str = k[::-1]
>>> rev_str
'dnoBsemaJ'
>>> type(rev_str)
<type 'str'>
>k='JamesBond'
>>>rev_str=k[:-1]
>>>雷沃街
“dnoBsemaJ”
>>>类型(修订版)

除非您确实想将算法写入反向,否则拼接可以帮助您

>>> k = 'JamesBond'
>>> rev_str = k[::-1]
>>> rev_str
'dnoBsemaJ'
>>> type(rev_str)
<type 'str'>
>k='JamesBond'
>>>rev_str=k[:-1]
>>>雷沃街
“dnoBsemaJ”
>>>类型(修订版)

在迭代同一列表时,切勿修改列表。您可能会遇到意外和不想要的行为,就像您现在最有可能遇到的那样。切勿在迭代同一列表时修改列表。你最终会遇到意想不到的和不想要的行为,就像你现在最可能遇到的那样。这会给出一个列表,而不是一个反向字符串。也不需要枚举:
“”。将[s[-i-1]用于范围内的i(len(s)))
。这将提供一个列表而不是反向字符串。也不需要枚举:
“”。加入([s[-i-1]表示范围内的i(len(s)))
。非常感谢。我一直在寻找类似的东西。你能看一下这里到底发生了什么吗?:因为我在范围内(len(text)-1,-1,-1)??非常感谢。我一直在寻找类似的东西。你能看一下这里到底发生了什么吗?:因为我在范围内(len(text)-1,-1,-1)??非常感谢你解释发生了什么。既然你让我看到了,我不明白我怎么没看到。没问题。我们都去过那里。毕竟,这是我们学习的方式。非常感谢你解释发生了什么。既然你让我看到了,我不明白我怎么没看到。没问题。我们都去过那里。毕竟,这是我们学习的方式。