2016-09-26 184 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