Python:For循环无法正常工作

Posted

技术标签:

【中文标题】Python:For循环无法正常工作【英文标题】:Python: For loop not working properly 【发布时间】:2017-02-03 21:50:43 【问题描述】:

为什么 for 循环不能正常工作?它只返回一个元素。

1.

rx = ['abc', 'de fg', 'hg i']
def string_m(a=rx):
     for i in a:
         l = re.sub(" ","/",i)
         r = l.split("/")
         r.reverse()
         rx = " ".join(r)
         return rx
a=string_m(rx)
print(a)

输出:

abc

2.

rx = ['abc', 'de fg', 'hg i']
def string_m(a=rx):
     for i in a:
         l = re.sub(" ","/",i)
         r = l.split("/")
         r.reverse()
         rx = " ".join(r)
     return rx
a=string_m(rx)
print(a)

输出:

i hg

-- 谁能帮我看看我做错了什么?

【问题讨论】:

这是做什么的? 缩进你的 for 循环,让它成为函数的一部分... 你需要维护一个中间列表来存储反向项 前面已经回答了一个几乎相同的问题。请参阅此说明:***.com/questions/39702039/… @AvinashRaj 不使用 reverse() 方法 docs 请注意,这是用于列表而不是字符串。 【参考方案1】:
rx = ['abc', 'de fg', 'hg i']

def string_m(a=rx):
    for i in range(len(a)):
        rx = a[i]
            return rx

a=string_m(rx)
print(a)

【讨论】:

【参考方案2】:
import re

rx = ['abc', 'de fg', 'hg i']

def string_m(a=rx):
    new = []
    for i in a:
        l = re.sub(" ","/",i)
        r = l.split("/")
        #r.reverse()
        rx = " ".join(r)
        new.append(rx)
    new.reverse()
    return new

a=string_m(rx)
print(a)

您最大的问题是您返回 for 循环的第一次迭代的结果,而不是在 for 循环完成之后。

另一个问题是不能用 reverse() 方法反转字符串。如果你想反转输出,试试上面的。

【讨论】:

列表new 应该定义在函数内部,除非你想要那些奇怪的副作用。你是对的,你不能就地反转一个字符串,但他正在反转一个完全有效的列表。

以上是关于Python:For循环无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

带有嵌套for循环的Javascript多维数组-无法正常工作

简单的 for 循环在某些手机上无法正常工作。优化不好?

返回for循环python

基于条件更改行值的 Python for 循环可以正常工作,但不会更改 pandas 数据帧上的值?

c语言for循环无法正常执行?

从浮点字符串到 Int 的 Python 类型转换在创建列表时无法在 for 循环中工作