2016-09-26 118 views
-6

为什么for循环无法正常工作?它只返回了一个元素。Python: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 

- 有人能帮我看看我做错了什么吗?

+2

这是应该做什么? –

+0

缩进您的for循环,因此它是功能的一部分... – Aaron

+0

您需要维护一个中间列表来存储反转的项目 –

回答

0
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循环结束后。

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

+0

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

+0

谢谢。它解决了! – Jin