Pythonで数値を前半・後半に分割したタプルを作成する方法
リスト内の各数値を桁数の中央で前半と後半に分割し、タプルとして格納したい場合があります。このような「等分割タプル」を構築するには、整数除算演算子「//」とリスト(文字列)のスライスを組み合わせて使用します。
サンプルコード
以下に具体的な実装例を示します。
my_list = [5613, 1223, 966143, 890, 65, 10221]
print("The list is :")
print(my_list)
my_result = []
for sub in my_list:
mid_index = len(str(sub)) // 2
element_1 = str(sub)[:mid_index]
element_2 = str(sub)[mid_index:]
my_result.append((int(element_1), int(element_2)))
print("The resultant list is :")
print(my_result)
実行結果
The list is : [5613, 1223, 966143, 890, 65, 10221] The resultant list is : [(56, 13), (12, 23), (966, 143), (8, 90), (6, 5), (10, 221)]
処理の流れの解説
まず元となるリストを定義し、その内容をコンソールに表示します。
結果を格納するための空のリストを用意します。
リストの各要素を反復処理し、数値を文字列に変換した上で、長さを2で整数除算することにより中央のインデックス位置を求めます。
スライスを使い、中央インデックスより前の部分と、それ以降の部分をそれぞれ切り出します。
切り出した2つの部分文字列を、別々の変数に代入します。
それぞれを整数型(int)に変換してタプルにまとめ、空のリストへ追加します。
最終的に完成したリストをコンソールに出力します。
補足:奇数桁の数値の扱い
「//」演算子による整数除算では小数点以下が切り捨てられるため、奇数桁の数値(例:966143 の場合は6桁ですが、890 のような3桁の場合)では、中央より前の部分が1桁短くなります。上記の出力例の (8, 90) や (6, 5) を見ると、この挙動が確認できます。必要に応じて分割位置の計算方法を調整してください。
リスト内包表記を使った簡潔な書き方
同じ処理は、リスト内包表記を使えばより簡潔に記述できます。
my_result = [
(int(str(sub)[: len(str(sub)) // 2]),
int(str(sub)[ len(str(sub)) // 2 :]))
for sub in my_list
]
print(my_result)
# [(56, 13), (12, 23), (966, 143), (8, 90), (6, 5), (10, 221)]
このように、Pythonでは「//」演算子とスライスを活用するだけで、数値の桁を自由に分割したタプルを簡単に生成できます。データの前処理や桁ごとの分析など、さまざまな場面で応用できるテクニックです。
-
Pythonでタプルのリストを辞書に変換する方法を解説
Pythonでは、キーと値のペアを持つタプルのリストを、簡単に辞書(dict)へ変換できます。本記事では、setdefault()メソッドやdict()コンストラクタを使った変換方法を、具体例とともにわかりやすく解説します。 変換のイメージ まずは、どのような変換が行われるのかを見てみましょう。タプルのリストの各要素の第1引数が辞書の「キー」に、第2引数が「値」に対応します。 入力: [(Adwaita, 5), (Aadrika, 5), (Babai, 37), (Mona, 7), (Sanj, 25), (Sakya, 30)] 出力: {Adwaita: 5, Aadr
-
Pythonで3Dリスト(3次元配列)を作成する方法【サンプルコード付き】
3Dリストとは、いわゆる3次元配列のことです。本記事では、Pythonで3Dリストを作成し、その内容を整形して出力するプログラムを解説します。ここでは例として、文字列「*」を初期値とする3×2×2の3次元リストを生成しますが、仕組みを理解すれば整数など任意の要素を持つ配列にも簡単に応用できます。 3Dリストのイメージ 3次元リストは、リストの中にリスト、さらにその中にリストが入った多段構造のデータです。たとえば、3×3×2の3Dリストは次のように表現できます。 [[1,1,1],[2,2,2],[3,3,3]], [[4,4,4],[5,5,5],[6,6,6]] アルゴリズム ステップ1: