2019/10/03
2020/04/14
Python入門 for文に便利な関数をまとめてみた!(format関数,itemsメソッド編)
Pythonには数多くの組み込み関数と呼ばれる関数が用意されています。
例えば出力して欲しい時はprint()を使いますが、これもPythonに用意されている組み込み関数の一つになります。
print('Hello World')
Hello World
Pythonの組み込み関数とその詳細はPythonの公式ドキュメントで確認できるので、そちらで見てみてください!
Python 3.7.4ドキュメントー組み込み関数
数多くある組み込み関数の中でも今回は特にfor文などの操作をする時に便利と感じている組み込み関数を紹介したいと思います!
enumerate関数とzip関数をわかりやすくまとめた記事はこちら
format関数
format関数は組み込み関数の中でも非常に使いやすい関数です。特にfor文などの反復処理の中で活躍します!
format関数とは?
format関数はよく“文字列の中に変数を埋め込むことが出来る”と説明されます。これはどういうことでしょうか?
これは九九を出力するプログラムを作ってみると理解しやすいです。
[問題]九九の2の段を出力するプログラムを書いてください
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
皆様はこのような問題を出されたときにどのようなコードを書くでしょうか?
僕は初心者の時にこのようなコードを書いていました。
for i in range(1,10): ans = 2*i #計算結果を変数ansに格納 print('2 x i = ans ')
これで良い感じに出力するのでは??と思って実行した結果がこちらになります。
2xi=ans 2xi=ans 2xi=ans 2xi=ans 2xi=ans 2xi=ans 2xi=ans 2xi=ans 2xi=ans
そりゃそうだ
ダブルクォーテーションの中は文字列として認識されるので、当然のようにこのような出力結果になってしまいます。
ではどうすればよかったのでしょうか??
そこで出てくるのがformat関数なのです
format関数は”文字列の中に変数を埋め込むことが出来る”関数です。(しつこい)
今回のように文字列の中に変数の中身を反映させたい時に使うと大変便利な関数です。
format関数を使ったときの問題の解答です。
問題の解答
for i in range(1,10): ans = 2*i print('2x{}={}'.format(i,ans))
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
綺麗に出力できましたね。format関数はPython2.7以降から使えるようになりました。
それ以前に書かれていたコードにはformat関数の代わりに%記法というものが使われています。
それではformat関数の書き方について勉強していきましょう!
format関数の書き方
基本的な書き方
format関数は次のように書きます。
name = 'オレンジ' price = 200 print('{}の価格は{}円です'.format(name,price))
オレンジの価格は200円です
基本は
('{}は{}です'.format(変数1,変数2))
のように書きます。{}の中に何も書かなければ変数1から順番に割り当てられていきます。
もし{}の中にインデックス番号を書いた場合は、インデックス番号通りに割り当てられていきます。
name = 'オレンジ' price = 200 name2 = 'リンゴ' price2 = 150 print('{2}の価格は{3}円です'.format(name,price,name2,price2))
リンゴの価格は150円です
format関数の書き方は以上となります。
リストを埋め込む時
format関数にはリスト型を埋め込むこともできます。
ただリスト型を埋め込む時は、リスト内のインデックスを[ ]で指定してあげないと上手く出力出来ません。
fruits = ["orange","apple","banana"] print("バスケットの中には{0[0]}、{0[1]}、{0[2]}があります。".format(fruits))
バスケットの中にはOrange、Apple、Bananaがあります。
もちろん複数のリストを埋め込むことも出来ます。
fruits = ["orange","apple","banana"] vegetables = ["TOMATO","CABBEGE","POTATO"] print("バスケットの中には{1[0]}、{0[1]}、{1[2]}があります。".format(fruits,vegetables))
バスケットの中にはTOMATO、apple、POTATOがあります。
format関数の便利なところ
format関数が便利に使えるのは何といっても反復処理(イテレーション)の中です。
さっきの九九の問題のように、反復処理内では1つの変数が色々な値を表すことが多いため、その都度変数を出力したいときにformat関数を使うと便利です。
また、format関数を使うと出力の書式を指定することが出来ます。
n進法や表示位置の書式を指定することが出来ます。
表示位置を指定する時は
<<<ここをテーブルで表示したい>>>
<幅の広さ(数字) | 左詰め |
^幅の広さ(数字) | 中央寄せ |
>幅の広さ(数字) | 右詰め |
で指定することが出来ます
tag = '出力例' print('{0:<15}'.format(tag)) #左詰めで出力 print('{0:^15}'.format(tag)) #中央寄せで出力 print('{0:>15}'.format(tag)) #右詰めで出力
出力例 出力例 出力例
itemsメソッド
itemsメソッドは辞書に対してループ処理をする際にvalueと一緒にkeyを取ってきてくれます。
要素と一緒にindexを取ってくるenumerate関数に似ていますね!
使い方自体は難しくありません。
例えば、元素の英語名をkeyとして、日本語名をvalueにしている辞書を用意します。
itemsメソッドを使ってどちらも出力するコードが次のようになっています。
elements = {"hydrogen":"水素","helium":"ヘリウム","Lithium":"リチウム","Beryllium":"ベリリウム","Boron":"ホウ素"} for jpn,element in elements.items(): print(jpn,element)
先にkeyが取得されて、それに対応するvalueが取得されます。
こちらも辞書型を使う時に便利なので、ぜひ覚えておいてください。
まとめ
今回はPythonのコードを書く上で是非知っておいて欲しい組み込み関数を紹介しました!
別でenumerate関数やzip関数についてわかりやすくまとめている記事はこちらになります!
競技プログラミング(Atcoder)でもこれらの関数はよく使われるものになっています。
どれもとても便利なので是非使ってみてください!
Recommended