【Python】リストの要素を一括修正する
1218 ワード
《Pythonプログラミング:入門から実戦まで》練習8-11:make_という名前を書くgreat()の関数は、マジシャンリストを変更し、各マジシャンの名前に「the Great」という文字を加えます.forループを使用してリスト要素を巡り始め、「the Great」+元の要素を現在の要素に割り当てます.結果はありません.元のコード:
実行結果:the Great dante the Great vergil the Great leo[‘dante’,‘vergil’,‘leo’]magiciansというリストが変更されていないことがわかりました.
Why? コードを修正しました.コードの変更:
実行結果:The Great dante The Great vergil The Great leo[‘The Great dante’,‘The Great vergil’,‘The Great leo’]
成功した.WHY? 推測:元のコードのforループのmagicianは、インデックスリストを逆にすることはできません.したがって、元のコードブロックを実行すると、magicianという一時変数が付与されるだけで、リスト自体に影響はありません.一方、修正コードでは、コードmagicians[i]がリストi-1の位置の要素を明確にインデックスしているため、この修正は直接その要素に対して有効である.
Pythonを独学したばかりなので、間違いを指摘してください.
def make_great(magicians):
for magician in magicians:
magician = "the Great " + magician
print(magician)
return(magician)
magicians=['dante','vergil','leo']
make_great(magicians)
print(magicians)
実行結果:the Great dante the Great vergil the Great leo[‘dante’,‘vergil’,‘leo’]magiciansというリストが変更されていないことがわかりました.
Why? コードを修正しました.コードの変更:
def make_great(magicians):
n=len(magicians)
for i in range(0,n):
magicians[i]="The Great "+magicians[i]
print(magicians[i])
return magicians
magicians=['dante','vergil','leo']
make_great(magicians)
print(magicians)
実行結果:The Great dante The Great vergil The Great leo[‘The Great dante’,‘The Great vergil’,‘The Great leo’]
成功した.WHY? 推測:元のコードのforループのmagicianは、インデックスリストを逆にすることはできません.したがって、元のコードブロックを実行すると、magicianという一時変数が付与されるだけで、リスト自体に影響はありません.一方、修正コードでは、コードmagicians[i]がリストi-1の位置の要素を明確にインデックスしているため、この修正は直接その要素に対して有効である.
Pythonを独学したばかりなので、間違いを指摘してください.