-
PythonでPDFを操作しよう!PyPDF2ライブラリの使い方を徹底解説
Pythonは多彩なライブラリを備えた非常に汎用性の高いプログラミング言語です。日常業務でよく扱うPDF(Portable Document Format)ファイルについても、Pythonにはさまざまな操作手段が用意されています。本記事では、その中でも「PyPDF2」というライブラリを使ってPDFファイルを操作する方法を解説します。 PyPDF2は純粋なPythonで実装されたPDFライブラリで、PDFページの分割・結合・切り抜き・変換が可能です。さらに、カスタムデータや表示オプション、パスワードの追加、テキストやメタデータの取得、ファイル全体のマージといった機能も備えています。 PyPDF
-
Pythonの各種実装の違いを徹底解説!CPython・Cython・Jython・IronPython・PyPyの特徴とは
多くの開発者にとって「Python」という名前は馴染み深いものですが、自分が使っているシステムでどのPython実装が動いているかを意識している人は意外と少ないかもしれません。そもそも私たちが「Python」と呼んでいるものは何なのでしょうか?抽象的な言語仕様としてのPythonなのか、最も一般的な実装であるCPython(注意:Cythonではありません)なのか、それともまったく別の何か、たとえばJythonやIronPython、PyPyといった実装を指しているのでしょうか?これらの技術はよく知られており頻繁に参照されますが、その目的や役割はそれぞれ大きく異なります。本記事では、「Pyth
-
Pythonで実践する線形回帰:データ探索からモデル構築・精度改善までの完全ガイド
線形回帰は、機械学習における最もシンプルで標準的な手法の1つであり、2つの変数の間に正の相関があるか負の相関があるかを判定するために広く使われています。 また、線形回帰は迅速な予測分析に役立つ数少ない強力なツールでもあります。この記事では、Pythonのpandasパッケージを使ってデータを読み込み、線形回帰モデルの推定・解釈・可視化までを一通り行う方法を解説します。 本題に入る前に、まず「回帰」とは何かを確認しておきましょう。 回帰とは? 回帰とは、従属変数(目的変数)と独立変数(説明変数)の間の関係性をモデル化するための予測モデリング手法の一種です。 回帰の主な種類 線形回帰 ロジステ
-
AndroidのLinkedBlockingDequeでcontains()メソッドを使う方法
LinkedBlockingDequeとは例を始める前に、まずLinkedBlockingDequeについて簡単に説明します。LinkedBlockingDequeは、CollectionインターフェースおよびAbstractQueueクラスをベースに実装された、リンクノード方式の両端キュー(Deque)です。オプションで容量上限を設定することができ、コンストラクタにメモリサイズを渡すことで、Androidアプリにおけるメモリの無駄な消費を抑えることができます。この記事では、AndroidのLinkedBlockingDequeでcontains()メソッドを使用し、特定の要素がキュー内に存在
-
PythonとOpenCVで特定の色(青)を検出する方法
画像処理は難しく感じられるかもしれませんが、実は思っているほど複雑ではありません。このチュートリアルでは、PythonとOpenCVを使った基本的な色検出の方法を解説します。コンピュータ上での色の仕組みコンピュータでは、色を「色空間(カラースペース)」や「カラーモデル」と呼ばれる形式で表現します。これは、色の範囲を数値のタプルとして記述する仕組みです。ここでは、最も広く使われている2つの色空間、RGB(赤・緑・青)とHSV(色相・彩度・明度)について見ていきましょう。RGBは、色を3つの成分からなるタプルとして表現します。各成分は0〜255の値を取ることができ、(0, 0, 0)は黒、(255
-
PythonでXMLを解析・編集・生成する方法|ElementTree APIの使い方を徹底解説
Pythonの標準ライブラリに含まれるXMLパーサーは、XMLファイルから必要な情報を読み取り、抽出するための最も手軽な手段のひとつです。このチュートリアルでは、xml.etree.ElementTree(ElementTree XML API)を使って、XMLファイルの「解析」「編集」「新規作成」を行う方法を、実際のコード例とともにわかりやすく解説します。 ElementTreeは、XMLデータの抽出・解析・変換をシンプルに実現できるAPIであり、外部ライブラリをインストールすることなくすぐに使い始められるのが大きな魅力です。 それでは、さっそくElementTreeを使ったPythonのX
-
Pythonのファイルオブジェクトとは?open関数によるファイル操作の基本を徹底解説
Pythonでは、ファイルを読み書きする際に特別なライブラリをインポートする必要はありません。ファイル操作は言語にネイティブに組み込まれているためです。 まず最初に行うのは、組み込み関数 open() を使ってファイルオブジェクトを取得することです。open() 関数はファイルを開き、ファイルオブジェクトを返します。このファイルオブジェクトには、開いたファイルから情報を取得したり、内容を操作したりするためのメソッドや属性が含まれています。 ファイルとは何か? ファイル操作を行う前に、「ファイルとは何か」を理解しておきましょう。ファイルとは、関連する情報を保存するためにディスク上に確保された「名
-
Pythonのtimeitモジュールとは?コード実行時間の計測方法を実例付きで徹底解説
Pythonには、コードの実行時間を計測するためのさまざまな方法が用意されています。そのひとつが、標準ライブラリのtimeモジュールを使い、プログラムの実行前後の時刻を記録して差分を求めるというアプローチです。Pythonのtimeitモジュールとはプログラムが動作している間、バックグラウンドでは多くのプロセスが同時に稼働しており、コードが実行可能な状態を維持しています。しかし、timeモジュールではこれらのバックグラウンド処理にかかる時間は考慮されません。より正確なパフォーマンス計測が必要な場合は、timeitモジュールを使用するのが最適です。timeitモジュールは、対象のコードをデフォル
-
競技プログラミングに役立つPythonの高速入出力(I/O)方法まとめ
競技プログラミングでは、入力をいかに速く読み込めるかが勝敗を左右する重要なポイントになります。本記事では、Pythonにおけるさまざまな入出力(I/O)方法を、具体例とともにわかりやすく解説していきます。例として、CodeforcesやSPOJなどのオンラインジャッジで「4つの整数 a, b, c, d を読み込み、その積を出力する」というシンプルな問題を考えてみましょう。実装方法は複数あるため、順番に見ていきます。基本の入力方法方法1:リスト内包表記を使うa, b, c, d = [int(x) for x in input().split()]print(a*b*c*d)方法2:map関数
-
Pythonコードを高速化する11の最適化テクニック
Pythonはコンパイル言語ほど高速ではないことは周知の事実ですが、大手企業がPythonで大規模なワークロードを処理している事例からも分かるように、決して「遅い言語」ではありません。この記事では、正しく動作するPythonプログラムをさらに速く、効率的にするために押さえておきたい最適化のヒントを11個紹介します。 ヒント1: 組み込み関数を活用する Pythonで独自に効率的なコードを書くことも可能ですが、C言語で実装された組み込み関数の速度には到底及びません。利用可能な組み込み関数はdir(__builtins__)で一覧表示できるので、車輪の再発明をする前に必ず確認しましょう。 ヒン
-
Pythonのany()とall()関数とは?違いと使い方を徹底解説
Pythonには、「AND」「OR」の論理演算に相当する処理を行うための組み込み関数として、all()とany()が用意されています。これらの関数を使うことで、リストやタプルなどのイテラブルの中身を簡潔に判定できます。 Pythonのany()関数 any()関数は、イテラブル内の要素が1つでも真(True)であればTrueを返し、それ以外はFalseを返します。イテラブルが空の場合もFalseを返します。 構文 any(iterable) 引数には、リスト・タプル・辞書などのイテラブルオブジェクトを指定します。 例1:リストの場合 >>> mylst = [False,
-
Pythonの文字列メソッド完全ガイド!使い方と実行例を一覧で解説
Pythonには、文字列に対して直接使える組み込みメソッドが多数用意されています。これらを活用することで、大文字・小文字の変換、部分文字列の検索、文字列の分割や結合など、日常的なテキスト処理を簡単に実装できます。この記事では、Python 3で利用できる主な文字列メソッドをカテゴリ別に整理し、それぞれの使い方を実行例とともにわかりやすく解説します。 大文字・小文字を変換するメソッド capitalize() 文字列の先頭の1文字を大文字にし、残りをすべて小文字にしたコピーを返します。 >>> mystring = hello python >>> pri
-
Pythonの関数デコレータとは?基本の仕組みと使い方をわかりやすく解説
Pythonでは、デコレータ(decorator)を使うことで、関数・メソッド・クラスといった呼び出し可能オブジェクト(callable)の振る舞いを、本体のコードを書き換えることなく拡張・変更できます。デコレータとは、簡単に言えば「関数やクラスを修飾(modify)するために使われる呼び出し可能なオブジェクト」のことです。特に関数デコレータは、関数への参照を引数として受け取り、その関数をラップ(wrap)した新しい関数を返す関数です。これにより、元の関数に手を加えずに、前後の処理を追加できます。デコレータの基本的な構文まず、次のようなコードを見てみましょう。コード例1@decorator d
-
Pythonのarrayモジュール徹底解説:数値データを効率的に扱う配列の基本と活用術
配列(Array)は、C/C++やJavaなどの言語で広く使われている基本的なデータ構造です。これらの言語では、配列は「同じデータ型の要素を複数まとめたもの」として定義されます。一方Pythonには、組み込みの配列型は存在しません。リスト(List)やタプル(Tuple)も要素のコレクションですが、異なる型の要素を混在させることができます。 そこで登場するのがPython標準ライブラリのarrayモジュールです。このモジュールはC言語風の配列をエミュレートし、同種のデータをコンパクトかつ効率的に格納できます。モジュールではarrayクラスが定義されており、以下のコンストラクタで配列オブジェクト
-
Python bisectモジュール入門:二分探索でリストを常にソート済みに保つ方法
長いリストに対して、要素を挿入するたびにソート処理を実行すると、プロセッサへの負荷が大きく、時間もかかってしまいます。Pythonのbisectモジュールを使えば、二分探索(バイセクション)アルゴリズムによって、要素を挿入した後もリストが自動的にソートされた状態を維持できます。このモジュールには、主に以下の関数が用意されています。bisect_left()指定した要素を挿入すべき位置(挿入ポイント)を、リストのソート順序を維持できるように検索します。同じ値の要素がすでにリスト内に存在する場合は、その既存要素の左側(手前)が挿入ポイントとして返されます。戻り値は list.insert() の第
-
Pythonの浅いコピー(シャローコピー)と深いコピー(ディープコピー)の違いをわかりやすく解説
Pythonにおける変数とオブジェクト参照の基本Pythonでは、変数はオブジェクトへの「参照」にすぎません。そのため、ある変数を別の変数に代入しても、オブジェクトそのものが複製されるわけではなく、同じオブジェクトへの新たな参照が作られるだけです。この挙動は、組み込み関数 id() を使うことで確認できます。>>> L1 = [1,2,3] >>> L2 = L1 >>> id(L1), id(L2) (2165544063496, 2165544063496)上記のコードの実行結果を見ると、両方のリストオブジェクトに対する id() の戻
-
Pythonのfunctoolsモジュール入門 — 高階関数と呼び出し可能オブジェクトを自在に操る
Pythonにおいて、関数は「高階関数(higher-order function)」として扱われます。これは、関数そのものを別の関数の引数として渡したり、関数の戻り値として他の関数を返したりできることを意味します。標準ライブラリのfunctoolsモジュールは、こうした高階関数を扱うための便利なユーティリティを多数提供しています。この記事では、functoolsモジュールの中でも特に実用性の高いpartial()、partialmethod()、cmp_to_key()、reduce()の4つの機能について、具体的なコード例とともに解説します。partial()関数 — 引数を「固定」した新
-
html.parser ― PythonのシンプルなHTML・XHTMLパーサーの使い方を徹底解説
Pythonの標準ライブラリ html.parser モジュールに定義されている HTMLParser クラスは、HTMLおよびXHTMLドキュメントを解析(パース)するための機能を提供します。このクラスには、タグ、データ、コメントなどのHTML要素を識別するためのハンドラーメソッドが用意されています。HTMLParser を実際に使うには、まずこのクラスを継承した新しいクラスを定義し、feed() メソッドを使ってHTMLテキストを渡します。from html.parser import HTMLParser class parser(HTMLParser): pass p = p
-
Pythonのurllib.parseモジュール徹底解説 — URLの分解・結合・エンコード方法
urllib.parseモジュールは、URL(Uniform Resource Locator)文字列を構成要素に分解したり、逆に各コンポーネントを組み合わせて1つのURL文字列を生成したりするための標準的なインターフェースを提供します。また、「ベースURL」を基準として「相対URL」を絶対URLへ変換する機能も備えています。 このモジュールがサポートしている主なURLスキームは以下のとおりです。 file ftp gopher hdl http / https imap mailto mms news / nntp / snews prospero rsync rtsp / rtspu s
-
urllib.robotparser徹底解説 ― Pythonでrobots.txtを解析するRobotFileParserクラスの使い方
ウェブサイトの所有者は、/robots.txt ファイルを使って、サイトにアクセスしてくるウェブロボットに対して指示を出します。これは「Robots Exclusion Protocol(ロボット排除プロトコル)」と呼ばれる仕組みです。 このファイルは、ウェブリソースへ自動的にアクセスするプログラム(スパイダー、クローラーなど)向けの、シンプルなテキストベースのアクセス制御システムです。ファイル内にはユーザーエージェントの識別子が記述され、その後に続けて、そのエージェントがアクセスしてはならないURLのリストが指定されます。 robots.txtの記述例 #robots.txt Sitemap