2016-09-26 7 views
-6

forループが正しく動作しないのはなぜですか?それはちょうど1つの要素を返すだけです。Python:forループが正しく動作しない

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 
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ループが終了した後ではなく、forループの最初の反復の結果を返すことです。

もう1つの問題は、reverse()メソッドで文字列を元に戻すことができないことです。出力を元に戻す場合は、上記を試してください。

+0

'new'リストは、それらの奇妙な副作用が必要な場合を除いて、関数内で*定義されるべきです。文字列を元に戻すことはできませんが、完全に動作するリストを逆にしているのは間違いありません。 – Wombatz

+0

ありがとうございます。それは解決されました! – Jin

関連する問題