Python enumerate関数

Python学習【365日チャレンジ!】44日目のマスターU(@Udemy11)です。

随分長い間使っていなかったMac miniをファイルサーバー化しようと思って、クリーンインストールを始めたまでは良かったのですが、OSのインストールで、なぜか勝手にELCapitanをインストールしはじめるにもかかわらず、「対応機種じゃないので再起動しろ」と言われ続けて、5回目くらいで諦めてしまいました。

Macminiの対応OSを調べてみると、High Sierraまでは対応しているみたいなのに、どうしてうまくいかないんでしょうか?

とりあえず、計画を一旦中断して、頭を冷やしてから仕切り直してみようとおもいます。

ということで、今日は、enumerate関数を学習します。

昨日の復習

昨日は、range関数を学習しました。
0から入力された値までのindex値を取得することができて、始まりの値が途中から取得したり、一つ飛びで取得したり、逆順で取得する方法もありました。

for i in range(5):
    print(i)

出力結果

0
1
2
3
4

for i in range(3, 5):
    print(i)

出力結果

3
4

for i in range(1, 5, 2):
    print(i)

出力結果

1
3

for i in reversed(range(5)):
    print(i)

出力結果

4
3
2
1
0

index値も取得できるので、index値と一緒に出力することもできました。

for i in range(4):
    print(i, 'Hello')

出力結果

0 Hello
1 Hello
2 Hello
3 Hello

いろいろな出力ができるので、いろいろと試してみてください。

enumerate関数の使い方

enumerate関数は、リストの値と一緒にindex値を取得できる関数です。

enumurate関数を使わずに、リストのindex値とリストの値を出力しようと思ったら、次のように書くことができます。

i = 0
for gadget in ['iphone', 'ipad', 'mac', 'appletv']:
    print(i, gadget)
    i += 1

出力結果

0 iphone
1 ipad
2 mac
3 appletv

変数iを定義してリストの値と一緒に出力しています。

こんな使い方をすることはまずありませんが、これだと変数iを定義しなくてはいけません。

enumerate関数は、リストの値とindex値を一緒に取り出すことができるので、変数を定義する必要なく、次のようなコードで目的の出力結果を得ることができます。

for j, item in enumerate(['iphone', 'ipad', 'mac', 'appletv']):
    print(j, item)
0 iphone
1 ipad
2 mac
3 appletv

実際にどのように使うかはイメージできませんが、とりあえず、リストの値とindex値が必要なときはenumerate関数を思い出すようにしましょう!

リスト化と組み合わせてみた

とりあえず、過去の復習を兼ねて、文字をリスト化して、enumerate関数にしてみました。

a = 'I like apple very much'
for i, goods in enumerate(list(a.split())):
    print(i, goods)

出力結果

0 I
1 like
2 apple
3 very
4 much

やってみたのはいいものの、こんなコード書く人いないんだろーなーと思っちゃう自分がいます。

ネットでPythonの関数やメソッドを検索してみると、かゆいところに手が届く解説をしてくれているサイトがたくさんあるんですよね。

なので、私は普通の人はこんなコード書かないだろうというコードを書いていこうと思っています。

とりあえずやってみる

Python学習365日チャレンジ!では、Pythonの関数やメソッドを紹介していますが、プログラマーではなく、学習しながら、学習したことを紹介しているので、間違っていることがたくさんあると思います。

Pythonを仕事で使っているエンジニアの方などから見ると、そんなコードの書き方しないだろうという初歩的なミスもたくさんあるでしょう。

なので、Pythonに関する正しい情報や使い方は、公式サイトやプロのプログラマーが紹介しているサイトを参考にしていただければと思います。

Python学習シリーズは、あくまで学習記録というスタンスで、素人目線で疑問に感じることやこうやったらどうなるのかな?というコードの書き方をしていきますので、

そりゃおかしいでしょ!

という使い方をやってしまってる場合は、コメントや問い合わせフォームから教えていただけると幸いです。

それでは、明日もGood Python!