-
Pythonで2次元配列からk番目に小さい要素を求めるプログラム
n×n のユーザー入力による整数行列と値 k が与えられたとき、その2次元配列の中から「k番目に小さい要素」を見つけるのが本記事の目的です。この問題は、Python標準ライブラリの heapq モジュールを使うことで効率的に解決できます。 heapqモジュールとは heapq(ヒープキュー)は、Pythonでヒープ構造(優先度付きキュー)を扱うためのモジュールです。このモジュールの特徴は、毎回ヒープの中で最も小さい要素が取り出される「最小ヒープ(min heap)」として動作する点にあります。また、nsmallest() メソッドを使うことで、データ集合の中から最小のn個の値を簡単に取得するこ
-
PythonでIPアドレスから先行ゼロ(先頭の0)を削除する方法
IPアドレスには、オクテットごとに余分な先行ゼロ(先頭の「0」)が含まれていることがあります。例えば「200.040.009.400」のような表記は、正規の形式では「200.40.9.400」と表されます。この問題を解決する基本的な考え方はシンプルです。まずIPアドレスの文字列を「.」(ドット)で分割し、各部分を整数型(int)に変換します。整数への変換時点で先頭のゼロは自動的に取り除かれるため、その後、再び文字列に戻して「.」で連結すれば、整形済みのIPアドレスが完成します。実行例入力 : 200.040.009.400 出力 : 200.40.9.400アルゴリズムStep 1: IPアド
-
Pythonのmap関数を使って「1」が最も多い行を見つけるプログラム
0と1だけで構成された2次元配列(行列)が与えられ、すべての行はあらかじめソートされているものとします。この中から「1」の個数が最も多い行を見つけるのが本記事の目的です。ここでは、Pythonの組み込み関数である map() を活用します。 map() 関数は、関数型プログラミングに用いられるPython組み込みツールの中でも最もシンプルなものの一つです。シーケンスやその他のイテラブル(反復可能オブジェクト)に対して、指定した関数を一括して適用することができます。 実行例 入力 : 入力配列 : [[0, 1, 1, 1, 1], [0, 0, 1, 1, 1], [1, 1, 1, 1, 1
-
Pythonでfloat要素を基準にタプルをソートする方法
この記事では、float型の数値を含むタプルのリストを、その数値を基準にソートする方法を解説します。Pythonの組み込み関数 sorted() を使った方法を中心に、key 引数や reverse 引数の使い方もあわせて紹介します。実行例たとえば、名前と数値(文字列形式)のペアからなるタプルのリストを、数値が大きい順に並べ替えるケースを考えてみましょう。入力: tuple = [(AAA, 10.265), (BBB, 24.107), (CCC, 26.541), (DDD, 14.256), (EEE, 11.365)] 出力: [(CCC, 26.541), (BBB, 24.107
-
【Python】リスト内のすべての値が指定した値より大きいかどうかを判定する方法
リストと基準値が与えられたとき、リスト内のすべての要素がその基準値より大きいかどうかを判定するプログラムです。条件を満たしていれば「Yes」、一つでも基準値以下の要素が存在すれば「No」を出力します。 実行例 入力 : A=[10, 20, 30, 40, 50] 基準値 = 20 出力 : No 入力 : A=[10, 20, 30, 40, 50] 基準値 = 5 出力 : Yes アルゴリズム ステップ1: ユーザーから入力を受け取り、リストを作成する。 ステップ2: 基準値(チェック用の値)を入力する。 ステップ3: forループでリストを走査する。 ステップ3.1: 各要素を基準
-
【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法
リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。実行例入力:A = [1, 2, 3, 4, 2, 1, 9] 出力:[1, 2, 3, 4, 9]リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。アルゴリズムステップ1:ユーザーからリストを入力として受け取る。 ステップ2:空のリストを作成する。 ステップ3:元のリストの全要素を順番に走査する。 ステップ4:その要素がすでに一意のリストに存在するかどう
-
Pythonでタプルのリストを辞書に変換する方法を解説
Pythonでは、キーと値のペアを持つタプルのリストを、簡単に辞書(dict)へ変換できます。本記事では、setdefault()メソッドやdict()コンストラクタを使った変換方法を、具体例とともにわかりやすく解説します。 変換のイメージ まずは、どのような変換が行われるのかを見てみましょう。タプルのリストの各要素の第1引数が辞書の「キー」に、第2引数が「値」に対応します。 入力: [(Adwaita, 5), (Aadrika, 5), (Babai, 37), (Mona, 7), (Sanj, 25), (Sakya, 30)] 出力: {Adwaita: 5, Aadr
-
Pythonで2つのリストが循環的に同一かどうかを判定する方法
この記事では、2つのリストが与えられたとき、それらが循環的に同一(circularly identical)であるかどうかを判定するPythonプログラムを紹介します。循環的に同一とは、片方のリストの要素を回転させたとき、もう片方のリストと完全に一致する状態を指します。 実行例 入力 : A = [100, 100, 10, 10, 100] B = [100, 100, 100, 10, 10] 出力 : True 解説 リストAの要素を順番に循環的に回転させると、リストBと同じ並びになるため、結果は True となります。つまり、開始位置が異なるだけで、要素の並びのパター
-
Pythonのitertools.accumulate関数で累積和(プレフィックスサム)配列を作る方法
Pythonでは、リスト(配列)の累積和(プレフィックスサム)を簡単に求めることができます。標準ライブラリのitertoolsモジュールに含まれるaccumulate()関数を使えば、先頭の要素から順に値を加算していった「走査合計(ランニングトータル)」を返すイテレータを生成できます。 itertools.accumulate(iterable[, func])は、モジュール内の他の関数と同様に、イテレータを構築して返します。そのため、取得したイテレータにはforループやlist()など、ストリームを消費する処理を通じてアクセスします。デフォルトの動作は要素の合計(加算)ですが、扱える要素はD
-
【Python】文字列内に含まれるURLを検出・チェックするプログラム
Pythonでは、標準ライブラリのreモジュール(正規表現モジュール)を使うことで、文字列の中にURLが含まれているかどうかを簡単にチェックできます。 この記事では、入力された文字列からURLを検出し、URLが存在する場合はそれを表示するプログラムを紹介します。URLの検出には、reモジュールが提供する findall() メソッドを使用します。 アルゴリズム ステップ1:文字列を入力として受け取る。 ステップ2:findall()関数は、文字列内のパターンに一致する「重複しないすべてのマッチ」を返す。 この関数では文字列が左から右へ走査され、見つかった順序どおりにマッチ結果が返される。 サン
-
PythonのLambda式とreduce関数で奇数回出現する数値を見つける方法
はじめに 本記事では、ユーザーが入力した正の整数の配列(リスト)の中から、奇数回出現する数値を見つける方法を解説します。PythonのLambda式とfunctools.reduce関数、そしてXOR演算を組み合わせることで、この問題を非常にシンプルなコードで解決できます。 実行例 入力 : A = [2, 4, 7, 7, 4, 2, 2] 出力 : 2 この例では、2 だけが3回(奇数回)出現しているため、結果として 2 が出力されます。 アルゴリズムの仕組み この手法の鍵となるのは、XOR(排他的論理和 ^)演算が持つ以下の性質です。 同じ数同士のXORは 0 になる(例:4 ^ 4
-
Pythonで2つのリストに共通要素が存在するかを判定する方法【初心者向け解説】
この記事では、ユーザーから入力された2つのリストを受け取り、それらの間に共通する要素が少なくとも1つ存在するかどうかを判定するPythonプログラムを紹介します。判定には、最もシンプルな「走査(トラバーサル)」という手法を使用します。具体的には、1つ目のリストと2つ目のリストを順番にたどりながら、各要素同士を比較していきます。 実行例 入力 : A = [10, 20, 30, 50] B = [90, 80, 30, 10, 3] 出力 : FOUND(共通要素あり) 入力 : A = [10, 20, 30, 50] B = [100, 200, 300,
-
指定した位置まで配列を反転するPythonプログラムの書き方
ユーザーから入力された配列と、反転したい位置が与えられたとき、その位置までの部分配列を逆順に並べ替えるのが本記事の目的です。具体的には、配列の先頭から n 番目までの要素(インデックス 0 ~ n-1)を反転し、残りの要素は元の順序のまま後ろに連結します。実行例入力:A=[3, 7, 6, 4, 1, 2] n=4 出力:[1, 4, 6, 7, 3, 2]この例では、先頭から 4 番目までの要素 [3, 7, 6, 4] が [4, 6, 7, 3] と反転され、残りの [1, 2] がそのまま後ろに続いています。アルゴリズムステップ1:先頭から n-1 番目までの要素を逆順に並べ替える ス
-
Pythonのsetを使って文字列内の母音の数をカウントする方法
この記事では、ユーザーが入力した文字列に含まれる母音の数をカウントするPythonプログラムを紹介します。母音の判定にはset(セット)を使用します。setとは、順序を持たないコレクション型のデータ構造です。反復処理が可能で、要素の追加や削除による変更もできますが、重複した要素は保持されません。さらに、setは内部的にハッシュテーブルで実装されているため、特定の要素が含まれているかどうかの判定(in演算子)を高速に行えるという大きな特徴があります。実行例 入力 : str1 = pythonprogram 出力 : 3 アルゴリズム ステップ1: 母音を数えるためのカウンター変数を用意します。
-
Pythonでタプル内の特定要素の出現回数をカウントする方法を徹底解説
この記事では、ユーザーが入力したタプルの中に、指定した要素が何回出現するかを数えるPythonプログラムを紹介します。初心者にもわかりやすいように、アルゴリズムの手順・サンプルコード・実行結果を順番に解説していきます。 例 入力: A = [10, 20, 30, 40, 10, 100, 80, 10] X = 10 出力: 3 この例では、リスト(タプル)内に「10」が3つ含まれているため、出力は「3」になります。 アルゴリズム 出現回数をカウントする関数 countoccur(A, x) の処理手順は以下の通りです(Aは配列、xは出現回数を数えたい要素)。 ステップ1
-
【Python】タプルが出現するまでリスト内の要素数をカウントする方法
リストAが与えられたとき、このリストにはネストされたタプルが含まれています。ここでの課題は、タプルの要素に到達するまで、リスト内の要素数をカウントすることです。この処理には、Python組み込みの isinstance() 関数を使用します。 isinstance() 関数は2つの引数を受け取ります。第1引数の「object」は判定対象となるオブジェクト、第2引数の「classinfo」はクラス・型、あるいはクラスや型のタプルです。オブジェクトが指定したクラス(またはそのサブクラス)のインスタンスである場合、もしくはタプル内のいずれかの型に一致する場合に True を返し、それ以外の場合は F
-
Pythonの組み込み関数permutationsを使って文字列の順列をすべて表示する方法
ある文字列が与えられたとき、その文字列から作れるすべての順列(並べ替えの組み合わせ)を表示するのが本記事の目的です。Pythonでは、標準ライブラリ itertools に含まれる組み込み関数 permutations(iterable) を使うことで、この問題を簡単に解くことができます。 実行例 入力: string = XYZ 出力: XYZ XZY YXZ YZX ZXY ZYX 3文字の文字列の場合、順列は 3! = 6通り生成されます。文字数が n の場合、順列は n! 通りになる点に注意してください
-
Pythonでサブリストの2番目の要素に基づいてリストをソートする方法
リストが与えられたとき、そのサブリストの2番目の要素に基づいてリスト全体をソートするのが本記事の課題です。ここでは、最も基本的なソートアルゴリズムであるバブルソートを使って実装していきます。 実行例 入力 [[CCC, 15], [AAA, 10], [RRRR, 2],[XXXX, 150]] 出力 [[RRRR, 2], [AAA, 10], [CCC, 15], [XXXX, 150]] アルゴリズムの手順 ステップ1: リストを受け取る。 ステップ2: ネストされたループを使って、サブリストの2番目の要素にアクセスする。 ステップ3: 配列のすべての要素を走査する。 ステップ4:
-
Pythonでアナグラム単語の最大サブセットのサイズを求める方法
はじめに 小文字からなる文字列の配列が与えられたとき、互いにアナグラムの関係にある文字列からなる「最大のサブセット」のサイズを求めるのが本記事の課題です。アナグラムとは、ある文字列が別の文字列の並べ替え(文字の順番の入れ替え)によって作られる関係のことです。たとえば、「python」と「typhon」はアナグラムの関係にあります。 Pythonでは、collectionsモジュールのCounter()メソッドを活用することで、この問題をシンプルかつ効率的に解くことができます。 アルゴリズムの手順 入力文字列をスペースで区切り、単語ごとに分割します。 文字列リスト内の各文字列をソートします。
-
【Python】pop()メソッドでセットから要素を削除する方法
「集合(セット)」という言葉は、数学の分野でおなじみの概念です。Pythonにおけるセット(set)は、数学の集合に相当するデータ構造で、さまざまな要素を格納することができます。セット内の要素には順序が定義されておらず、要素の追加や削除、セット全体の反復処理のほか、和集合・積集合・差集合といった標準的な集合演算も行えます。 本記事では、セットから要素を削除する方法を解説します。ここでは pop() メソッドを使用します。pop() はPythonの組み込みメソッドで、セットから要素を1つずつ取り出して削除するために使われます。なお、セットは順序を持たないデータ構造のため、どの要素が削除されるか