Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】各行のサイズが指定した数ずつ増加する行列へリストを変換する方法

リストを、各行のサイズが一定の数ずつ増加していく行列(ネストされたリスト)に変換したい場合があります。このような処理を実現するには、切り捨て除算を行う「//」演算子と、シンプルな反復処理(forループ)を組み合わせるのが効果的です。

サンプルコード

以下に、実際の動作を示すサンプルプログラムを紹介します。

my_list = [42, 45, 67, 89, 99, 10, 23, 12, 31, 43, 60, 1, 0]

print("The list is :")
print(my_list)

my_key = 3
print("The value of key is ")
print(my_key)

my_result = []

for index in range(0, len(my_list) // my_key):
   my_result.append(my_list[0: (index + 1) * my_key])

print("The resultant matrix is :")
print(my_result)

出力結果

The list is :
[42, 45, 67, 89, 99, 10, 23, 12, 31, 43, 60, 1, 0]
The value of key is
3
The resultant matrix is :
[[42, 45, 67], [42, 45, 67, 89, 99, 10], [42, 45, 67, 89, 99, 10, 23, 12, 31], [42, 45, 67, 89, 99, 10, 23, 12, 31, 43, 60, 1]]

処理の流れと解説

  • まず、元となるリストを定義し、コンソールに表示します。

  • 次に、1行あたりの増加幅を決めるkeyの値(ここでは3)を定義し、表示します。

  • 変換結果を格納するための空のリスト my_result を作成します。

  • range(0, len(my_list) // my_key) により、リストの長さをkeyで切り捨て除算した回数だけループを回します。

  • 各ループでは、スライス my_list[0: (index + 1) * my_key] を使って、先頭から (index + 1) × key 個分の要素を取り出します。これにより、3個 → 6個 → 9個 → 12個と、行のサイズがkeyずつ増加していきます。

  • 取り出したスライスを append() メソッドで結果リストに追加します。

  • 最後に、完成した行列をコンソールに出力します。

補足:リスト内包表記による簡潔な書き方

同じ処理は、リスト内包表記を使うことでより簡潔に記述することもできます。

my_result = [my_list[0: (i + 1) * my_key] for i in range(len(my_list) // my_key)]

このように、「//」演算子による切り捨て除算でループ回数を求め、スライスで要素を段階的に拡張していくのが、この変換処理のポイントです。

  1. Pythonでタプルのリストを辞書に変換する方法を解説

    Pythonでは、キーと値のペアを持つタプルのリストを、簡単に辞書(dict)へ変換できます。本記事では、setdefault()メソッドやdict()コンストラクタを使った変換方法を、具体例とともにわかりやすく解説します。 変換のイメージ まずは、どのような変換が行われるのかを見てみましょう。タプルのリストの各要素の第1引数が辞書の「キー」に、第2引数が「値」に対応します。 入力: [(Adwaita, 5), (Aadrika, 5), (Babai, 37), (Mona, 7), (Sanj, 25), (Sakya, 30)] 出力: {Adwaita: 5, Aadr

  2. Pythonで文字のリストを文字列に変換する方法を解説

    Pythonでは、リスト内の個々の要素をひとつの文字列にまとめたい場面がよくあります。たとえば、データを保存したり送信したりする際に必要となるシリアライズ(直列化)の処理では、このような変換が非常に役立ちます。具体的には、次のような変換を指します。[h, e, l, l, o, , w, o, r, l, d] → hello worldjoinメソッドを使った変換Pythonには、このような変換を実現するためのjoin()メソッドが標準で用意されています。joinメソッドは、区切り文字(デリミタ)として使う文字列に対して呼び出し、引数に渡したリストの各要素を連結します。今回は各文字をつなげ