Python 組み込み関数 sorted()

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

そろそろハマチが釣れてるんじゃないかという誘惑にかられてしまい、Python学習のスピードが落ちてきているような気がします。

とはいえ、まだまだ先は長いので、魚のことは忘れて、みっちりとPython学習に打ち込みたいと思います。

昨日の復習

昨日は、setup.pyを作って、パッケージを配布する方法について学習しました。

Pythonistaで挑戦しましたが、うまく行かずに最終的にPycharmで実践しました。

Pycharmの機能を使って、setup.pyを作成して、下位のフォルダに移動した後、中身を少し変更し、ターミナルから実行して、パッケージ化しました。

このパッケージ化されたライブラリがたくさんあって、必要なものを一括してインストールされているのが、最初に導入したAnacondaということですね。

ここまで学習をしてきて、なんとなくPythonの構造がわかるようになってきました。

たくさんのPython開発者が作った便利なライブラリが充実していて、それを誰もがつかえる環境にあるのがPythonの人気の秘訣のような気がします。

setup.pyを使ったパッケージ化の詳細については、長くなるので、こちらの記事をごらんください。

それでは今日の学習をすすめましょう。

組み込み関数

組み込み関数は、その名のとおり、Pythonに最初から組み込まれている関数です。

Python学習を始めると、まず最初におぼえるのがprint()ですね。

何かを出力するときに使われる関数で、今までで最も出現回数の多い組み込み関数です。

自分で作ったパッケージやサードパーティーのライブラリなどは、importで読み込む必要がありますが、組み込み関数は最初から読み込まれているので、importする必要がないわけです。

ちなみにどうしてもimportを使って読み込んだ形を取りたいという場合は、次のように書くこともできます。

import builtins
builtins.print('Do you need it?')

出力結果

Do you need it?

ま〜、こんな使い方をする必要はまったくもってありませんので、あくまで参考ということで。

これまでに学習した組み込み関数

Pythonの公式ドキュメントをみると組み込み関数について次のような一覧表が用意されています。

Python 組み込み関数

今日は、矢印のsorted()について、学習する予定ですが、四角で囲んだこれまでに学習した組み込み関数について、ちょっとアルファベット順に復習しておきます。

dict()

dict型にまとめる関数で、key=valueの形で値を並べてdictionaryを作ることができます。

d = dict('apple'=100, 'orange'=200)
print(d)

出力結果

{'apple': 100, 'orange': 200}

また、1対のタプルをネストして、dict()で辞書型にすることもできました。

d = dict((('apple', 100), ('orange', 200)))
print(d)

出力結果

{'apple': 100, 'orange': 200}

enumerate()

enumerate関数は、リストのインデックス値と値を対で取得できる関数でした。

for i, item in enumerate(['apple', 'banana', 'orange']):
    print(i, item)

出力結果

0 apple
1 banana
2 orange

format()

文字列にフォーマットして、Bracesの波括弧{}に、順番に代入することができます。

print('a is {}'.format('a pen'))
print('a is {2} {1} {0}'.format(1,2,3))

出力結果

a is a pen
a is 3 2 1

{}にインデックス値を入れると指定されているインデックス順に並べ替えることが可能になります。

globals()

globals関数は、グローバルエリアで定義されている変数を辞書型で返してくれる関数です。

なにも記載されていないPythonファイルで次のコードを実行するといろいろな値が抽出されます。

print(globals())

出力結果

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x1125d5588>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__cached__': None, '__file__': '/private/var/mobile/Containers/Shared/AppGroup/BA3519D5-E394-4ECC-BFF6-B1876836D55A/Pythonista3/Documents/Mypython/day0421.py'}

help()

わからない関数が出てきたときに、関数名を引数にして実行すると、その関数のヘルプが表示されます。

input()

インタラクティブな使い方ができる関数で、ユーザー側の入力ができるようになります。

int()

integerつまり、整数型ですが、文字列の数字を整数型に変更することが可能です。

len()

文字列の文字数を抽出したり、リストやタプルの要素数(長さ)を取得することができました。

locals()

globals関数同様に、ローカルエリアに定義されている変数を辞書型で取得することができます。

next()

ジェネレーターを生成して、順番にデータを取り出すときに活用するnext関数です。

print()

誰もが最初に学習する基本中の基本、print関数です。

reversed()

並べ替えを反対にしてくれる関数です。

set()

集合型の値に変換する関数です。

str()

strは、Strings(文字列)のことで、文字列にフォーマットしたいときに使います。

tuple()

リストなどをタプルにしてくれる関数です。

type()

変数のタイプを知りたいときに使う関数です。

zip()

リストやタプルをまとめることができる関数です。

ということで、ひととおり、これまで学習した関数を復習がてら確認しておきました。
たまには思い出して使わないと、使い方をどんどん忘れていってしまいそうです。

sorted()

今回学習するのは、sortedです。

辞書型のvalueで並べ替えた順番にkeyを表示することができます。

ranking = {
    'A': 45,
    'B': 68,
    'C': 98, 
    'D': 50
}
           
r = sorted(ranking, key=ranking.get, reverse=True)
print(r)

AさんからDさんまでいて、それぞれの点数を持っています。

その点数をもとに、AさんからDさんを並べ替えました。

ちなみに、sorted関数は、次のような書き方をします。

sorted(iterable変数, key=iterable変数.get, reverse=Ture or False)

iterable変数は、ループを回せる連続した変数で、今回は辞書型の変数なので、getメソッドを使って、valueを取得します。

最後のreverseは、記述がなければ、デフォルトでFalseになっていますが、昇順の場合はFalse、降順の場合はTrueにします。

今回は、成績の良い順に並べたので、Trueにしています。

実践しながら覚える

関数をすべて頭の中に入れるのは、はっきりいって効率が悪すぎます。

必ず途中で嫌になってしまうでしょう。

なので、出てきたときに、使い方をできるだけ理解できるよう、いくつものパターンを試してみることが重要です。

まさに、実践しながら、憶えていくほうが、モチベーションが上がらないまま単語をおぼえるような状況よりも効率がいいことは間違いないでしょう。

ということで、すべての組み込み関数を紹介できていませんが、今日はここまで。

それでは、明日もGood Python!