PythonプログラミングTips集(蛇使いのための備忘録)

登場から早くも20年ほどになるPython(パイソン)は、今やIT・AI産業において必要不可欠なプログラミング言語となっている。このページではPython(3系)によるコーディングの基本から、ちょっとした応用までの内容について備忘録程度に書き残しておく。内容は適宜追加していく予定だが、他人に優しい解説が掲載されているとは限らないので予めご留意願いたい。

なお、当サイトでは個別の質問対応には応じられないので、適宜、他サイトの専用掲示板などをご活用下さい。

(管理人:blocks)


・Python3のTips集:目次

そもそもsyntax分からん系のTopic

§ if文の書き方
・if 文の例①(if~elif~else)
・if 文の例②(条件が複数のとき/論理演算子)
・比較演算子(==, !=, <=, など…)
・比較するときは変数の型に注意せよ
§ while文の書き方
・while 文の例
・break処理でループを中断する
・break処理で多重ループを抜けるワザ
・比較演算子(==, !=, <=, など…)
・比較するときは変数の型に注意せよ
§ for文の書き方とrange関数の使い方
・for 文の例①(リスト)
・for 文の例②(range関数の使い方)

出力系のTopic

§ printで出力のformatを指定する
・format関数の基本的な使い方
・%で書式を指定する方法
・「f文字列」の使い方 (Python3.6以降)
§ printで桁合わせ・ゼロ埋め・文字寄せする
・桁合わせ
・ゼロ埋め
・左寄せ・中央寄せ・右寄せ
§ 特殊文字( # とか % とか ” とか)を出力する
・エスケープする
・波括弧(中括弧)を表示する
§ matplotlibでグラフを作成する方法【総まとめ】
・matplotlibの基本と2つの流儀
・色・線種・マーカーの指定
・折れ線&曲線のグラフ
・棒グラフ
・円グラフ
・ヒストグラム
・散布図とカラーバー
・ヒートマップ
・複数の線を表示する
・等高線&濃淡のある等高線
・3Dのグラフを表示する
・複数のグラフを並べる

演算系のTopic

§ 四則計算と剰余(余り)の計算
・整数値の四則計算
・小数値の四則計算
§ べき乗と平方根・累乗根の計算
・べき乗と平方根・累乗根の計算
・複素数のべき乗計算
§ 実数↔整数の変換
§ 複素数型変数の扱い方
・複素数型変数の四則計算
・実部と虚部、共役複素数を取得する
・複素数型変数の大きさ(abs関数)
・複素数のべき乗計算
§ 記数法の変換(10進数⇔n進数)
・$n$進数から$10$進数へ変換
・$10$進数から$n$進数へ変換

文字列系のTopic

§ 文字列同士を比較する方法
§ 文字列の部分一致・検索など

リスト(配列)系のTopic

§ リストの作成方法
・リストを定義する
・2次元配列(リストのリスト)を定義する
・要素の個数を倍にする(リストの初期化)
・range関数を利用する
§ リストへの要素の追加
・リストに要素を追加する(末尾に追加する)
・リストに要素を挿入する(末尾以外に追加する)
・リスト同士の結合
§ リストの要素数を数える
・len関数でリストの要素数を取得する
・要素のindex(何番目の位置にあるのか)を取得する
§ リストの要素の入れ替え
・1行で入れ替える
・別の変数を経由する
§ リストを丸ごと入れ替える
・i 番目以降の要素を全て入れ替える
・スライス(:)を使った別法
§ listとarrayの違い

その他のTopic

§ バージョンを確認する方法
・sysモジュールを利用する方法
・コマンドラインで確認する方法
§ プログラムの実行時間を計測する方法
・timeモジュールを利用する方法
§ プログラムを途中で終了させる方法
・sysモジュールを利用する方法


・そもそも「Python」って?

「Python」は1991年に公開された汎用のプログラミング言語。コードが極力シンプルになるよう(半ば強制的に)設計されており、一目で分かりやい&少ない行数でプログラミングできるというのが大きな特徴である。

他の言語などに比べて変数の「型」や配列に必要な「メモリ」などの管理が簡単であるため、プログラミング初心者ならまずPythonを、といった具合で近年、世界的に見ても爆発的に普及しているプログラミング言語である。巷で流行りのAI(人工知能)、ビックデータ解析、マシンラーニング(機械学習)と相性が良く、エンジニアなら書けない人はいないほど広く使われている。

Pythonのコーディングでは、C言語のように “{…}” で括らずに構文をインデントで制御するため、スクリプトの見た目が非常にキレイである(誰が書いてもほぼ統一された見た目になる)。そのため、他のプログラミング言語使用者がPythonのスクリプトを見ると良くも悪くも「お行儀の良い」プログラムだと感じられることだろう。これがPython最大の特長だと思う。

C言語やシェルスクリプトなどであればワンライナーで書けるものも、Pythonではこのインデントの制約のために1行でまとめてワシャッと書くことは許されない。そういう人には向いていないが、慣れればかなり使いやすい言語であることは間違いない。Pythonは初心者向けのプログラミング言語と言える。

●   ●   ●

2020年10月現在、リリースされているPythonの最新バージョンは3.9である。Python2系はWebプログラミング界隈ではまだまだ現役だが、これからPython使いを目指すという方であればPython3系を勉強されることを強くオススメする。

 


・Pythonのコーディング規約「PEP 8」

PEP 8」(外部リンク) というPythonのコーディングスタイルガイドラインが知られており、Pythonによるコーディングにおけるコモンセンスとなっている。

代表的なものを以下に掲載しておく。

・インデントは空白4つ。タブは使わない。

・すべての行の長さを最大79文字までとする。必要に応じて行を折り返す。

・関数やクラス、比較的大きいコードブロックの区切りには適宜空行を使う。

・コメントはできるだけコードと同じ行に書く。該当するコードを書き換えた場合はコメントを更新せよ。

・docstringを使う。

・演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には空白を入れないこと。(例えば、「a = f(1, 2) + g(3, 4)」のようにする)

・クラスや関数には一貫性のある名前を付ける。

などなど。開発チームによっては独自のルールでコーディングすることがあるかもしれないが、基本的には第三者にも読みやすいコーディングを心掛ける、というスタンスで良いと思われる。pycodestyle (外部リンク) というパッケージを使えば PEP 8 のルールに則っているかチェックできる(pipでダウンロード可能)。…らしいが、管理人はズボラなので特に使用したことはない。

 


・Pythonは計算が苦手?

C言語に比べてオリジナルのPythonは演算が遅いということを聞いたことがある人は多いだろう。実際、処理能力には結構差があり、計算量によってはC言語のプログラムに比べて数倍~数十倍(時には数百倍以上)もの時間が掛かってしまうこともある。これはPythonが型を明示せずに変数を宣言可能な、動的型付け言語という仕様なのが理由の一つ。

これを改善すべく、Pythonには「numpy」と呼ばれる数値計算を効率的に実行するための拡張モジュールが用意されている。

開発環境で使えるように

でインストールすると、

で使えるようになる。詳しく解説しているサイトは幾らでもあるので、そちらを参照されたい。

 


・pipを使おう

pipのインストールはこちら(外部リンク)。

基本的には 

pip install [ライブラリ名]

でインストール可能。PCのローカルに置く場合はコマンドプロンプトを開いてpipすればOK

以下に管理人が便利だと思うライブラリ・モジュールを列挙しておく。

  • numpy:数値計算を効率的に行うための拡張モジュール
  • matplotlib:グラフ描画ライブラリ(インタラクティブなグラフを生成可能)
  • request:インターネット接続のためのHTTPライブラリ(ファイルのダウンロード・ウェブページ(HTTP)の取得など)
    urllibでもhttpの取得などは可能
  • beautifulsoup4:HTMLやXMLからデータを抽出する
  • lxml
  • pypdf2:PDF関係をいじる(結合・分割・挿入・ロックなど)

pyinstaller:●●●.pyをexeファイル(実行可能な形式)に変換する
これと同時にpycryptodomeもインストールした。
環境変数Pathに

とか

のように “Scripts” まで通しておくこと。環境変数Pathのいじり方は当サイトに解説記事があるので、ご覧下さい。

 


開発環境の構築

孤高のミニマリストであれば「メモ帳」さえ使えればプログラミングはできる、と言い張るかもしれないが、テキストエディタ選びは実際かなり重要ですよね。個人的には「Atom」というエディタが取っ付きやすいと思う。

必要な分だけパッケージをインストールして自分好みにカスタマイズ可能。補完機能やハイライト機能が充実しており、日本語化パッケージもあるので初心者にもお勧めできる。ありがたいことにpythonの開発環境構築を指南するウェブサイトや書籍は世の中にゴロゴロ転がっているので、そちらを参考にして頂ければ良い。「Atom」を導入する方法を解説しているサイトも沢山あるので、OSに応じて対応して下さい。