【问题标题】:Python: For loop not working properlyPython:For循环无法正常工作
【发布时间】: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 循环,让它成为函数的一部分...
  • 你需要维护一个中间列表来存储反向项
  • 前面已经回答了一个几乎相同的问题。请参阅此说明:stackoverflow.com/questions/39702039/…
  • @AvinashRaj 不使用 reverse() 方法 docs 请注意,这是用于列表而不是字符串。

标签: python django


【解决方案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 应该定义在函数内部,除非你想要那些奇怪的副作用。你是对的,你不能就地反转一个字符串,但他正在反转一个完全有效的列表。
    猜你喜欢
    • 2019-01-01
    • 2014-12-02
    • 2013-08-09
    • 2013-10-30
    • 2013-10-19
    • 2017-11-11
    相关资源
    最近更新 更多