2017-03-06 21 views
-1

タプルのリストを取得し、各タプルの最初の文字列を返す関数の作成に問題があります。以下は私の現在のコードですが、何も起こっていない、私は構文エラーを取得しません。どんな助けもありがとう。関数が必要な出力を出力しない

lst_of_tups = ([('hello', 'all'), ('music', 'playing'), ('celebration', 'station')]) 

def build_string(lst_of_tups): 
    final_str = "" 
    for tup in list_of_tups: 
      for item in tup: 
       final_str = final_str + item[0] 
    return final_str 
    print build_string 

****予想される出力:、内部ループ内ですることができますreturn、彼らは変数の多くを定義し、予期せぬ副作用を持っている:hampcsは****

+0

あなたは自分の財産から帰ってきているので、実行は決して次の行に到達しません。 –

+0

typo: 'list_of_tups'と' lst_of_tups'を修正しました。それは一度私のために働く。 –

+0

[返信文の後にもっと仕事をする方法はありますか?](http://stackoverflow.com/questions/11604699/is-there-a-way-to-do-more-work-after- a-return-statement) –

答えて

0

これらの文字列操作関数は、エラーが発生しやすいです。 ..

コンパイルをリストするのに慣れたら、そのようなプログラムを簡単に作成して、実行パフォーマンスの良い(文字列の連結が遅い)&を作成することができます。一つの方法:

def build_string(lst_of_tups): 
    return "".join([x[0] for y in lst_of_tups for x in y]) 

は基本的に、それはすべての文字列からそれぞれ最初の文字を抽出するために、リスト内包内のわずか2ループ(データを平坦化)ですが、文字列を再構築するstr.joinを使用して一緒に参加しました。

+0

助けを借りてありがとう、そしてリスト内包表記を使用している方がより効率的です! –

0

関数内のreturnステートメントに達すると、関数は正常終了します。行

print build_string 

に到達できません。 (もう一つの問題は、名前build_stringが定義されていないことである。)

はこのようにあなたの関数を使用します。もちろん

result = build_string(lst_of_tups) # calls your function and puts the return value in the result variable 
print result # print the result 

、仲介変数resultはあなただけのようにもprint build_string(lst_of_tups)を発行することができ、必要ありません。

関連する問題