2016-03-31 13 views
2

リスト内の各文字列の最後に疑問符(?)を追加しようとしています。追加 '?'リスト内の各文字列の最後まで

現在、['person?', 'person?', 'person?']を印刷していますが、['cat?', 'dog?', 'person?']を印刷したいと思います。

誰かが私が間違っていることを理解するのを助けてくれますか?

def suffixQuestionMark(str_list): 
    '''Returns a list of the same strings but with ? suffixed to each''' 
    for s in str_list: 
     str_list = map(lambda x: s + '?', str_list) 
    return str_list 

print (suffixQuestionMark(['cat', 'dog', 'person'])) 

ありがとうございます!

+0

'[S + "?" ["cat"、 "dog"、 "person"]] 'sの中で – fenceop

答えて

2

使用この:

def suffixQuestionMark(str_list): 
    return map(lambda el: el + '?', str_list) 

出力:

['cat?', 'dog?', 'person?'] 

はここにあなたのコード内で何が起こっていたかだ。

str_list = map(lambda x: s + '?', str_list) 

3つの単語がであるので、この行は(3回実行反復処理リスト)、各反復の最後にstr_listを上書きして第1の反復においてwordcatであり、第2の反復でdogであり、最後にpersonである、リストを含む。

だからこそ、あなたは['person?', 'person?', 'person?']のリストになります。

0

map方法をまだ何もforループは必要ありませんあなたのための反復を処理します。

items = ['first', 'second', 'third'] 
map(lambda item: item + '?', items) 
    => ['first?', 'second?', 'third?'] 
0

問題は、あなたがあなたのリスト内のすべての文字列のリストを再マッピングしているということです。

map機能は、自動的にリストを反復し、ラムダを実行します。リストCOMPは最も簡単な解決策になるの復帰

def suffixQuestionMark(str_list): 
    '''Returns a list of the same strings but with ? suffixed to each''' 
    return map(lambda s: s + '?', str_list) 

print (suffixQuestionMark(['cat', 'dog', 'person'])) 
# prints ['cat?', 'dog?', 'person?'] 
3

return [s + "?" for s in l] 

また、マップを使用するよりも効率的になるだろう。

独自のコードは、あなたがsが人であるときは、最後の繰り返しにそうラムダでsを使用し、あなたがperson + ?に等しくなるようにすべての値をマッピングするためperson? 3倍であることがわかり、なぜ潜在的な問題の多くを持っています。ループ内でmap(lambda x: x + '?', str_list)に変更した場合でも、各文字列に* len(l)?が追加されます。単にreturn map(lambda x: x + '?', str_list)となりますが、この例ではマップを使用する利点はありません。

また、<map object at 0x7fd27a4060f0>のような文字列が返された場合は、タグが示すようにPython 3も使用していません。あなたが実際にmap機能を使用するを持っていない、リストの内包がここだけで結構ですという

2

注:

def suffix_question_mark(words): 
    return [word+'?' for word in words] 
0
def suffixQuestionMark(str_list): 
    k = [x+"?" for x in str_list] 
    print k 
suffixQuestionMark(['cat', 'dog', 'person']) 
関連する問題