-
Boto3を使ってAWS Glueのセキュリティ設定をページネーションで一覧取得する方法
この記事では、boto3ライブラリを使用して、AWS Glueに登録されているセキュリティ設定(Security Configuration)をページネーションしながら効率的に一覧取得する方法を解説します。課題問題: Pythonのboto3ライブラリを使い、自分のAWSアカウント内のAWS Glue Data Catalogに作成されたセキュリティ設定を、ページ分割(ページネーション)しながら取得すること。解決のためのアプローチと手順ステップ1: 例外処理のために boto3 と botocore.exceptions(ClientErrorなど)をインポートします。ステップ2: この関数で
-
Pythonでタプルのリストから連続するN番目の列の差分を求める方法
Pythonでタプルのリストを扱う際、「隣り合う要素同士のN番目の列(インデックス)の値の差」を求めたいケースがあります。例えば、時系列データや座標データなど、複数の数値を持つレコードが並んだデータから、特定の列に注目して変化量を計算したい場合などです。このような処理は、リストを順番に反復処理しながら、組み込み関数 abs() とリストメソッド append() を組み合わせることで簡単に実現できます。abs() 関数は数値の絶対値(正の値)を返し、append() メソッドはリストの末尾に要素を追加します。差分の大きさだけが必要な場合は、絶対値を取ることで符号を気にせず結果を得られます。実装
-
Pythonでタプルを最大要素に基づいてソートする方法
タプルのリストを、それぞれのタプルが持つ最大要素に基づいて並べ替えたい場合があります。このようなときは、組み込み関数「max」を使って各タプルの最大値を返す関数を定義し、それをソートの基準として利用します。続いて、「sort」メソッドの key 引数にその関数を指定することで、リストを簡単に並べ替えることができます。以下に具体的な実装例を示します。サンプルコードdef get_max_value(my_val): return max(my_val) my_list = [(4, 6, 8, 1), (13, 21, 42, 56), (7, 1, 9, 0), (1, 2)] p
-
PythonでタプルのリストからKで割り切れる要素だけを持つタプルを抽出する方法
特定の値 K で割り切れる要素だけを持つタプルをリストから見つけたい場合、Pythonのリスト内包表記と組み込み関数 all() を組み合わせると、簡潔かつ効率的に実現できます。 以下に具体的な実装例を示します。 サンプルコード my_list = [(45, 90, 135), (71, 92, 26), (2, 67, 98)] print(The list is : ) print(my_list) K = 45 print(The value of K has been initialized to ) print(K) my_result = [sub for sub in my
-
Pythonでタプルをリストに変換する方法:全要素の後に指定した文字列を追加する
タプルをリストに変換し、すべての要素の後に特定の文字列を追加したい場合、リスト内包表記を使用すると簡潔に実現できます。この記事では、その具体的な方法をサンプルコードとともにわかりやすく解説します。サンプルコードmy_tup = (56, 78, 91, 32, 45, 11, 23) print(The tuple is : ) print(my_tup) K = Hi my_result = [elem for sub in my_tup for elem in (sub, K)] print(The tuple after conversion with K is : ) prin
-
Pythonでタプルのリストから正の要素のみを持つタプルを抽出する方法
タプルのリストから「すべての要素が正の値(0以上)」であるタプルだけを取り出したい場合、リスト内包表記を使うと非常に簡潔に実現できます。 サンプルコード my_list = [(56, 43), (-31, 21, 23), (51, -65, 26), (24, 56)] print("The list is : ") print(my_list) my_result = [sub for sub in my_list if all(elem >= 0 for elem in sub)] print("The positive elements ar
-
Pythonで単方向リンクリスト(片方向連結リスト)が回文かどうかを判定する方法
単方向リンクリスト(片方向連結リスト)が回文になっているかどうかを確認したい場合は、「要素を追加するメソッド」「指定したノードの前のノードを取得するメソッド」「回文かどうかを判定するメソッド」を定義することで実現できます。以下に具体的な実装例を示します。 サンプルコード class Node: def __init__(self, data): self.data = data self.next = None class LinkedList_struct: def __init__(self): self.head = N
-
Boto3を使ってAWS Glue Data Catalogのテーブルバージョンをページネーションで取得する方法
課題Pythonのboto3ライブラリを使用して、自分のアカウントに作成されたAWS Glue Data Catalog内のテーブルについて、そのテーブルバージョンをページネーション(ページ分割)しながら取得します。解決のためのアプローチとアルゴリズムステップ1: 例外処理のために、boto3とbotocoreの例外クラスをインポートします。ステップ2: database_nameとtable_nameは必須パラメータです。一方、max_items、page_size、starting_tokenは任意のパラメータです。max_items:返されるレコードの総数を表します。利用可能なレコード数
-
Pythonで単方向リンクリストを循環リンクリストに変換する方法
単方向リンクリスト(片方向連結リスト)を循環リンクリストへ変換する必要がある場合、convert_to_circular_list というメソッドを定義します。このメソッドは、リストの最後のノードが先頭のノードを指すようにすることで、リスト全体を循環構造にします。以下に具体的な実装例を示します。サンプルコードclass Node: def __init__(self, data): self.data = data self.next = None class LinkedList_struct: def __init__(self):
-
Boto3を使ってAWS Glue Data Catalogの全テーブルをページネーションで取得する方法
問題提起 Pythonのboto3ライブラリを使用して、自分のAWSアカウントに作成されたGlue Data Catalog内のすべてのテーブルを、ページネーション処理を通じて取得する方法を解説します。 解決のためのアプローチとアルゴリズム ステップ1: 例外処理のために、boto3とbotocoreの例外クラスをインポートします。 ステップ2: 引数について整理します。database_nameは必須ですが、max_items、page_size、starting_tokenは任意のパラメータです。 max_items: 取得するレコードの総数を指定します。利用可能なレコード数がmax_
-
Pythonで二分木の通り順走査(Inorder Traversal)によりN番目のノードを取得するプログラム
二分木の通り順走査(inorder traversal)を利用して「n番目」のノードを取得したい場合、ルート要素の設定、左右へのノード挿入、通り順走査の実行といった機能を持つ二分木クラスを作成するのが一般的です。クラスのインスタンスを生成すれば、これらのメソッドを自由に呼び出せるようになります。 本記事では、実際のコード例とともに、その仕組みと動作をわかりやすく解説します。 サンプルコード class BinaryTree_struct: def __init__(self, key=None): self.key = key self.left = N
-
Boto3を使ってAWS Glueのすべてのトリガーをページネーションで取得する方法
課題Pythonのboto3ライブラリを使用して、自分のAWSアカウントに作成されたAWS Glue Data Catalog上のすべてのトリガーを、ページネーション(ページ分割)処理しながら取得します。解決のための手順・アルゴリズムステップ1: 例外をハンドリングするために、boto3およびbotocore.exceptionsをインポートします。ステップ2: max_items、page_size、starting_tokenは、この関数のオプションパラメータです。max_items: 取得するレコードの総数を表します。利用可能なレコード数がmax_itemsを超える場合、レスポンスにNe
-
【Python】中順走査・後順走査の結果から二分木を構築するプログラムの書き方
二分木を構築する際、後順走査(ポストオーダートラバーサル)と中順走査(インオーダートラバーサル)の結果を入力として受け取るケースはよくあります。本記事では、ルート要素の設定や各種走査を行うメソッドを持つクラスを定義し、そのインスタンスを使って二分木を構築する方法を解説します。 以下に実際のサンプルコードを示します。 サンプルコード class BinaryTree_struct: def __init__(self, key=None): self.key = key self.lef
-
【Python】二分探索木(BST)で最小値・最大値を求めるプログラムの書き方
二分探索木(Binary Search Tree:BST)の中から最小の要素と最大の要素を見つけるには、まず二分木のクラスを作成し、要素を追加するメソッドや特定のノードを検索するメソッドを定義します。その後、クラスのインスタンスを生成して、これらのメソッドを使って操作を行います。 二分探索木には「左側の子孫は必ず親より小さく、右側の子孫は必ず親より大きい」という重要な性質があります。そのため、最小値は常に最も左端のノード、最大値は常に最も右端のノードに存在します。この性質を利用すれば、木の高さに比例した計算量 O(h) で最小値・最大値を効率よく取得できます。 サンプルコード class B
-
Python(boto3)でS3オブジェクトの全バージョン一覧を取得する方法
本記事では、AWSリソース上のS3に保存されているオブジェクトについて、そのすべてのバージョンの一覧を取得する方法を解説します。実現したいことS3バケット「Bucket_1」の「testfolder」配下にある test.zip の全バージョンを一覧表示します。課題: Pythonの boto3 ライブラリを使用して、S3からオブジェクトの全バージョンの一覧を取得すること。解決のための手順(アルゴリズム)ステップ1: 例外処理のために boto3 および botocore の例外クラスをインポートします。ステップ2: bucket_name(バケット名)は必須パラメータです。ステップ3: bo
-
Boto3を使ってS3バケットのオブジェクトバージョンをページネーションで取得する方法
はじめに バージョニングが有効化されたS3バケットには、同一オブジェクトの複数バージョンが保存されるため、オブジェクト数が多いほど一度のAPI呼び出しですべてを取得するのは困難になります。本記事では、Pythonのboto3ライブラリを使用して、AWSアカウント内のS3バケット(AWS Glue Data Catalogのデータソースとしても利用されるバケットを含む)に保存されたオブジェクトバージョンを、ページネーション(ページ分割)しながら効率的に取得する方法を解説します。 課題 boto3ライブラリをPythonで使用し、自分のアカウントに作成されたS3バケットのオブジェクトバージョンを
-
【Python】スタックを実装するプログラムの書き方とサンプルコード解説
Pythonでスタックを実装する場合は、まずスタック専用のクラスを定義し、そのインスタンスを生成します。その後、要素を追加する「プッシュ(push)」や、要素を取り出す「ポップ(pop)」を行うメソッドを定義し、インスタンスを通じてこれらのメソッドを呼び出して利用します。 スタックとは スタックは「後入れ先出し(LIFO: Last-In, First-Out)」と呼ばれるデータ構造です。最後に追加した要素が最初に取り出されるという特性を持ち、テキストエディタの元に戻す(Undo)機能や、プログラムの関数呼び出し履歴の管理など、さまざまな場面で活用されています。 サンプルコード 以下は、Py
-
Pythonでキュー(Queue)を実装するプログラムの書き方
Pythonでキュー(Queue)を実装するには、専用のクラスを作成し、要素を追加・削除するためのメソッドを定義します。その後、クラスのインスタンスを生成し、メソッドを呼び出すことで各種操作を行い、結果をコンソールに表示します。キューは「先入れ先出し(FIFO:First In First Out)」と呼ばれるデータ構造で、最初に追加した要素が最初に取り出されるという特徴があります。タスク管理やバッファ処理など、さまざまな場面で活用される基本的な構造です。以下に、Pythonでのキューの実装例を示します。サンプルコードclass Queue_struct: &
-
Pythonで指定した基数表現に0が連続して含まれるかどうかを判定する方法
プログラミングでは、ある数値を特定の基数(進法)で表したとき、その桁並びの中に「0」が連続して現れるかどうかを調べたいことがあります。本記事では、Pythonを使ってこの判定を行う方法を解説します。 実装の流れとしては、数値と基数を引数として受け取る関数を定義し、その内部で別の補助関数を呼び出すことで、条件を満たすかどうかに応じて「Yes」または「No」を出力します。 サンプルコード 0): res = False continue res = True return True N, K = 8, 2 print(Do
-
Pythonでツリー(木構造)を構築し、挿入・削除・表示を操作する方法
ツリー(木構造)を構築し、要素の挿入・削除・表示といった操作を行いたい場合、必要なメソッドを備えたクラスを定義するのが一般的です。クラスのインスタンスを生成し、それを通じてノードへのアクセスや各種操作を実行します。この記事では、対話型メニューを備えたPythonのサンプルプログラムを紹介し、その仕組みをわかりやすく解説します。サンプルコードclass Tree_struct: def __init__(self, data=None, parent=None): self.key = data self.children = [] sel