-
競技プログラミングでPythonが選ばれる理由とは?初心者にもわかる5つのメリット
競技プログラミングとは、適切なデータ構造を選択し、効率的なアルゴリズムを実装することで課題を解決するコーディング活動のことです。プログラマーの思考力や実装力が多角的に試される場となっています。 競技では、出題された仮想的なプログラミング問題に対して、さまざまなロジックを駆使して解法を見つけ出す必要があります。さらに重要なのは、単に正解を出すだけでなく、時間計算量・空間計算量の両面で優れた「効率的な」解法を導くことです。 競技プログラミングの問題文の一例を挙げてみましょう。 【問題例】 長さnの文字列sが与えられます。sは小文字のラテン文字のみで構成されています。 部分文字列とは、元の文字列から
-
競技プログラミングで差がつくPython高速化テクニック徹底解説
Pythonは、競技プログラミングの世界で最も人気のある言語の一つです。多くの問題は、Pythonを使えば現実的な時間内に簡単に解くことができます。しかし、複雑な問題になると、十分に高速なPythonコードを書くこと自体が課題になることも少なくありません。ここでは、競技プログラミングでコードのパフォーマンスを向上させるための、Pythonらしい(Pythonicな)コーディング技法を紹介します。1. 文字列の連結にはjoinを使う以下のような書き方は避けましょう。str1 = some_list = [Welcome , To , Tutorialspoint ] for x in some
-
Pythonの正規表現を使ったパターンマッチング入門
正規表現とは? 実際のプログラミングの世界では、文字列の解析処理はほとんどの場合、正規表現によって行われています。Pythonにおける正規表現とは、テキストのパターンを照合(マッチング)するための手法です。 Pythonには標準で「re」モジュールが付属しており、これによって正規表現の機能が提供されます。追加のインストールは不要です。 Pythonでの正規表現検索は、一般的に次のように記述します。 match = re.search(pattern, string) re.search()メソッドは、「正規表現パターン」と「検索対象の文字列」の2つの引数を受け取り、その文字列の中からパターン
-
Pythonのガベージコレクションとは?参照カウントの仕組みをわかりやすく解説
Pythonのメモリ管理は非常にシンプルです。メモリの割り当てと解放は自動的に行われるため、開発者が細かいメモリ管理を意識する必要はほとんどありません。このメモリ管理の仕組みの一つがガベージコレクションです。本記事では、ガベージコレクションの基本概念から参照カウントの動作まで、具体例を交えながら詳しく解説していきます。 ガベージコレクションとは ガベージコレクションとは、実行中のプログラムがそれ以上使用しなくなったメモリ領域を自動的に検出し、解放するプロセスのことです。ガベージコレクションによって解放されたメモリは、他のプログラムが再び利用できるようになります。 Pythonがメモリ管理に採用
-
【Python・pandas】データ分析で文字列を数値(int)に変換・置き換える方法
はじめに データ分析を行っていると、文字列を数値(int型/float型)に変換したい場面によく出会います。各文字列に対して一意の整数値を割り当てれば、カテゴリごとの文字列の値を簡単に区別できるようになります。 ここでは、カンマ区切り(CSV)形式のデータを使用します。次のようなCSVデータが入ったExcelファイルがあるとしましょう。 企業名業種投資判断 HDFC Bank金融ホールド Apolloヘルスケア買い Hero自動車アンダーパフォーム Yes Bank金融ホールド M&M自動車アンダーパフォーム Fortisヘルスケア買い Maruti自動車アンダーパフォーム 上
-
Pythonのリスト内包表記とは?基本構文から実践例までわかりやすく解説
Pythonには、あるリストから別のリストを生成するための簡潔な構文が用意されています。これらの式は「リスト内包表記(List Comprehensions)」と呼ばれ、Pythonにおける最も強力な機能の一つです。リスト内包表記は、Pythonが関数型プログラミングの概念をサポートしている好例でもあります。リスト内包表記を使うと、関数やフィルタ処理をリストの各要素に簡単に適用できます。正しく使えば非常に便利ですが、使い方を誤るとかえって読みにくいコードになってしまうため注意が必要です。基本構文リスト内包表記の一般的な構文は以下の通りです。[expr for element in iterab
-
【NumPy】flatten()とravel()の違いを徹底解説!ビューとコピーの挙動・速度の違いを比較
NumPyでは、リストやタプルなどさまざまなデータから配列を作成できます。そして、多次元のndarrayを1次元配列へ変換する方法として、flatten()メソッドとravel()メソッドの2種類が用意されています。 一見すると両者はまったく同じ働きをするように見えますが、内部の動作には重要な違いがあります。この記事では、その違いをサンプルコードとともにわかりやすく解説します。 基本的な使い方 まずは、それぞれのメソッドを実際に使ってみましょう。 import numpy as np # リストから配列を作成 arr = np.array([(2, 7, 3, 4), (5, 6, 9, 1
-
【NumPy入門】Pythonでの基本的なスライシングと高度なインデックス参照の使い方
NumPyのndarray(多次元配列)へのインデックス参照は、標準的なPythonの x[obj] 構文を使って行えます。ここで x は配列、obj は選択条件(セレクタ)です。NumPyで利用できるインデックス参照には、主に以下の3種類があります。フィールドアクセス(field access)基本的なスライシング(basic slicing)高度なインデックス参照(advanced indexing)どの種類のインデックス参照が適用されるかは、obj の内容によって決まります。この記事では、特に「基本的なスライシング」と「高度なインデックス参照」に焦点を当てて解説します。さらに、高度なイン
-
Pythonでターミナル出力に色を付ける方法
ターミナル上でテキストを色付きで表示したい場面はよくあります。Pythonでは、ANSIエスケープシーケンスを直接扱う以外にも、専用ライブラリを使えば簡単に実現できます。ここでは、代表的なライブラリ「termcolor」を使った方法を紹介します。 Pythonモジュールを使う方法 termcolorモジュールとは termcolorは、ターミナル出力向けのANSIカラーフォーマットを提供する軽量ライブラリです。まずpipでインストールしておきましょう。 pip install termcolor 主な関数は次の2つです。 colored(): 色付きの文字列を返します。print()などと組
-
Pythonのpickleモジュール徹底解説:シリアライズとデシリアライズの基本から実践例まで
PythonのpickleモジュールとはPythonのpickleモジュールは、Pythonオブジェクト構造の直列化(シリアライズ)と逆直列化(デシリアライズ)を行うための標準ライブラリです。リストや辞書などあらゆる種類のPythonオブジェクトをバイトストリーム(0と1のデータ列)へ変換する処理は、「ピクル化(pickling)」「シリアライズ」「フラット化」「マーシャリング」などと呼ばれます。逆に、ピクル化で生成されたバイトストリームを元のPythonオブジェクトへ戻す処理は「アンピクル(unpickling)」と呼ばれます。なぜpickleを使うのか?実際の開発現場では、pickle化と
-
Pythonでディレクトリとファイルを一覧表示する方法を徹底解説
Pythonには、指定したパス内のファイルやディレクトリを一覧表示するための方法がいくつかあります。この記事では、osモジュールを使った基本的な方法から、条件に応じた絞り込み、再帰的な探索まで、実用的なテクニックをわかりやすく解説します。 os.listdir()でファイルとディレクトリの一覧を取得する 特定のパスにあるすべてのファイルやディレクトリを取得する最も簡単な方法のひとつが、os.listdir()メソッドを使うことです。 import os for x in os.listdir(.): print(x) 実行結果 .pytest_cache 4forces.json
-
PythonでMD5ハッシュを生成する方法|hashlibモジュールの使い方を徹底解説
データセキュリティは、あらゆるIT企業にとって最重要課題の一つです。データを保護し、その完全性を検証するために、さまざまなハッシュ技術が活用されています。本記事では、Pythonを使ってMD5ハッシュを生成・エンコードする方法を、具体的なコード例とともにわかりやすく解説します。 ハッシュとは何か ハッシュとは、可変長のバイト列を入力として受け取り、それを固定長のバイト列へと変換する関数のことです。重要な特徴として、元のデータ(入力されたバイト列)を復元することが極めて困難である点が挙げられます。例えば、入力を x、ハッシュ関数を f とした場合、f(x) の計算は高速かつ簡単に行えますが、そこ
-
PythonでSHAハッシュを生成する方法|hashlibモジュールの使い方を徹底解説
セキュリティは、あらゆるIT企業にとって最重要課題の一つです。大切なデータを保護し、検証するために、さまざまなハッシュ技術が活用されています。本記事では、Pythonのhashlibモジュールを使ったSHAハッシュ化の基本について、サンプルコード付きでわかりやすく解説します。ハッシュとは何かハッシュとは、可変長のバイト列を入力として受け取り、固定長のバイト列へ変換する関数のことです。ただし、一度ハッシュ化したデータから元のデータ(入力バイト列)を復元することは極めて困難です。たとえば、入力をx、ハッシュ関数をfとすると、f(x)の計算は高速かつ簡単に行えますが、その結果からxを逆算することは非
-
Pythonでランダムな数値やIDを生成する方法を徹底解説
プロジェクトでは、テスト用のサンプルデータの作成や空カラムへの値の埋め込みなど、さまざまな目的のためにランダムなデータを生成する必要があります。Pythonにはランダムデータを生成する方法が多数用意されており、この記事ではその代表的な手法をわかりやすく解説していきます。 Pythonのrandomモジュールとは Pythonに標準で付属している重要なライブラリの一つがrandomモジュールです。この記事全体を通してこのモジュールを使用していきます。 randomモジュールを使うには、コードの先頭でインポートするだけで準備完了です。 import random それでは、実際の使い方を見てみま
-
PythonのTkinterでメモ帳アプリを自作する方法【初心者向け完全ガイド】
TkinterはPythonに標準搭載されているGUIライブラリで、これを使えばさまざまなデスクトップアプリケーションを簡単に作成できます。本記事では、Tkinterを活用して、Windowsのメモ帳のようなテキストエディタを実際に開発していきます。完成するメモ帳にはメニューバーが備わっており、新規ファイルの作成、既存ファイルを開く、保存、編集、切り取り・コピー・貼り付けなど、テキストエディタに必要な基本機能をすべて実装します。前提条件PythonがインストールされていることTkinterがインストールされていること補足: TkinterはPython 3.xでは標準ライブラリとして同梱されて
-
Pythonでキーロガーを作成する方法|pynputによるキー入力の記録
キーロガーとは?本記事では、Pythonを使ってシンプルなキーロガーを開発する方法を解説します。まず最初に、「キーロガー」とは何かを確認しておきましょう。キーロガーとは、キーボードへの入力(キーストローク)を監視・記録するプログラムのことです。記録されたキー入力はログファイルに保存され、ユーザー名やパスワードといった機密情報がどのように入力されたのかを後から確認できるようになります。セキュリティ学習や仕組みの理解を目的として広く知られている技術ですが、扱い方には十分な注意が必要です。pynputモジュールのインストールキーロガーの作成には「pynput」モジュールを使用します。pynputはP
-
Pythonで作るWebサイトブロッカー ― 業務時間中にSNSへのアクセスを自動遮断する方法
大手IT企業で働いたことがある方なら、FacebookやYouTube、InstagramといったSNS系のWebサイトが社内からアクセスできないよう制限されていることに気づいた経験があるかもしれません。こうした制限は、サードパーティ製アプリに頼らなくても実現できます。自分専用のオリジナルツールを作れば、好きなWebサイトを自由にブロックできるのです。しかもPythonでWebサイトブロッカーを開発するのは、それほど難しいことではありません。この記事では、指定したWebサイトをブロックするPythonスクリプトの作り方を解説します。前提条件Python 3.x がインストールされていることPy
-
Pythonで実現するメッセージ認証:HMACによるキー付きハッシュの基本と使い方
Pythonでは、暗号学的ハッシュ関数を用いたメッセージ認証を、HMAC(Keyed-Hash Message Authentication Code)という仕組みによって簡単に実現できます。HMACはMD5やSHA-1など、複数の反復型ハッシュ関数と共有秘密鍵を組み合わせて使用できる汎用的な認証方式です。基本的な考え方はシンプルです。実際のデータと共有秘密鍵を組み合わせて暗号学的ハッシュ値を生成することで、データを保護します。送信されるのはハッシュ値のみで、秘密鍵そのものは含まれません。受信側はこのハッシュ値を利用して、送信または保存されたメッセージが改ざんされていないかを検証できます。HM
-
PythonのPyTubeライブラリでYouTube動画をダウンロードする方法
「YouTube」をご存知ない方はいないでしょう。世界最大級の動画共有サイトであり、特にインドでは圧倒的な人気を誇ります。 気に入った動画を後からオフラインで視聴したいと思い、ダウンロードを試みたことはありませんか?多くの人は「YouTubeダウンローダー」と呼ばれるアプリを利用しますが、無料版では機能制限があったり、有料だったりと、何かと不便なものです。 そこで本記事では、自分でプログラムを作成してYouTube動画をダウンロードする方法を紹介します。Pythonの「pytube」というライブラリを使えば、驚くほど簡単に実現できます。pytubeは、Web上から動画をダウンロードするための機
-
Pythonのバリア(Barrier)オブジェクトとは?スレッド同期の基本を解説
Pythonのバリア(Barrier)オブジェクトとは バリア(Barrier)は、Pythonが提供するスレッド同期手法のひとつです。単一または複数のスレッドが、処理の流れの中の特定の時点で互いに待ち合わせ、参加スレッド全員が揃ったところで一斉に先へ進むための仕組みを提供します。 バリアオブジェクトを作成するには、threading.Barrierを使用します。 threading.Barrier(parties, action = None, timeout = None) コンストラクタの引数 parties:待ち合わせるスレッドの数。 action:スレッドが解放される際に、いずれか