【11日目】for ループでリストを更新してみる
こんばんは、なぺです。
前回はforループを勉強しました。
今回はそれを応用して、リストの要素を更新する処理を書いてみようと思います。
まずリストを作ります。
>>> dora = ["doraemon", "nobita", "shizuka", "giant", "suneo"] >>> print(dora) ['doraemon', 'nobita', 'shizuka', 'giant', 'suneo']
できました。
これをすべて大文字に変換したいと思います。
dora = ["doraemon", "nobita", "shizuka", "giant", "suneo"] i=0 for babuu in dora: up = dora[i] up = up.upper() dora[i] = up i += 1 print(dora)
出力結果↓
['DORAEMON', 'NOBITA', 'SHIZUKA', 'GIANT', 'SUNEO']
と、参考書には書いてあったのですが(リストや変数名は好き勝手変えてます)、
これだと変数babuuの意味が?だったのでアレンジしました。
dora = ["doraemon", "nobita", "shizuka", "giant", "suneo"] i=0 for babuu in dora: dora[i] = babuu.upper() i += 1 print(dora)
出力結果↓
['DORAEMON', 'NOBITA', 'SHIZUKA', 'GIANT', 'SUNEO']
できたじゃん!(やるじゃん私)
変数babuuには、ループを繰り返すたびにリストの要素が一つずつ入っているのだから、わざわざdoraリストのi番目を変数upに入れて~ごねごね(up = dora[i]あたり)なんてしなくてもいいよね?
間違ってたらごめんなさい。
上の方法では、ループのたびにiをインクリメントして、次のループで使うインデックス値としているのですが、Pythonにはインデックス値を自動的に用意してくれる方法があります。
enumerate関数というのを使います。(enumerate:列挙する)
dora = ["doraemon", "nobita", "shizuka", "giant", "suneo"] for i, babuu in enumerate(dora): dora[i] = babuu.upper() print(dora)
出力結果↓
['DORAEMON', 'NOBITA', 'SHIZUKA', 'GIANT', 'SUNEO']
さらにすっきりしました!良き!
enumerate関数にdoraリストを渡すと、現在のループにおけるインデックスをiに渡してくれるのですね~
次は、加工したデータを新しい別のリストに格納するコードを書いてみます。
dora = ["doraemon", "nobita", "shizuka", "giant", "suneo"] classmates = ["dekisugi","yasuo","haruo"] #別のリスト friends = [] #データ加工後の格納先リスト for new in dora: #まずはdoraリストを加工→別リストに格納 new = new.upper()#大文字に変換 friends.append(new)#friendsリストに格納 for new in classmates: #次にclassmatesリストを加工→別リストに格納 new = new.upper() friends.append(new)#friendsリストに格納 print(friends)
出力結果↓
['DORAEMON', 'NOBITA', 'SHIZUKA', 'GIANT', 'SUNEO', 'DEKISUGI', 'YASUO', 'HARUO']
できました!
今日はここまでにします。
思い出のマーニーに見はまってあんまり進まなかったよ^^
それではまた