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

Pythonで要素数を値として含むネストされたリストを作成する方法

Pythonでは、リストの各インデックス番号を値として持つネストされたリスト(入れ子構造のリスト)を作成したいケースがあります。たとえば [[1], [2, 2], [3, 3, 3]] のように、「インデックス+1」の値をその回数だけ繰り返したサブリストを並べる形です。このような処理は、シンプルなforループによる反復処理とリスト内包表記を組み合わせることで、簡潔に実装できます。

サンプルコード

以下に具体的な実装例を示します。

my_list = [11, 25, 36, 24]
print("The list is :")
print(my_list)
for element in range(len(my_list)):
   my_list[element] = [element+1 for j in range(element+1)]

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

実行結果

The list is :
[11, 25, 36, 24]
The resultant list is :
[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]

コードの解説

  • まず、整数値を含むリスト my_list を定義し、コンソールに出力して初期状態を確認します。

  • range(len(my_list)) を使ってリストの長さ分だけループを回し、各インデックスに対して順番に処理を行います。

  • リスト内包表記 [element+1 for j in range(element+1)] により、「インデックス+1」の値を「インデックス+1」回繰り返した新しいリストを生成し、元のリストの該当位置に上書き代入します。

  • 最後に、変換後のネストされたリストをコンソールに出力して完了です。

別の方法:リスト内包表記だけで書く

元のリストの値自体が必要ない場合は、forループを使わずにリスト内包表記1行でも同じ結果を得られます。こちらの方がよりPythonicで読みやすいコードになります。

n = 4
nested_list = [[i + 1] * (i + 1) for i in range(n)]
print(nested_list)
# 出力: [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]

この方法では [i + 1] * (i + 1) の部分で、値 i + 1i + 1 回繰り返したリストを直接生成しています。リストの乗算演算子(*)を活用することで、コードが大幅に短縮できます。

  1. Pythonのリスト内で特定の文字列を含む要素をカウントする方法

    Pythonでは、リストの各要素の中に、別の変数が持つ特定の文字列が含まれているかどうかを調べたい場面がよくあります。本記事では、指定した文字列がリストの要素として何回出現するかを数えるための、複数の実装方法をわかりやすく解説します。 range関数とlen関数を使う方法 まずは最も基本的なアプローチです。range関数とlen関数を組み合わせてリストの長さ分だけループ処理を行い、in演算子で各要素に目的の文字列が含まれているかを判定します。条件を満たすたびに、初期値0のカウント用変数をインクリメントしていく仕組みです。 コード例 Alist = [Mon, Wed, Mon, Tue, Th

  2. Pythonで辞書の値(リスト)の要素数をカウントする3つの方法

    キーと値のペアを持つ辞書の中には、値そのものがリスト型になっているものがあります。この記事では、そのような辞書に含まれるリストの要素数を合計してカウントする方法を、3つの異なるアプローチで解説します。方法1:isinstance を使うまず基本となるのが、isinstance() 関数を使って辞書の各値がリストかどうかを判定する方法です。判定結果が True の場合に、count 変数へそのリストの長さを加算していきます。サンプルコード# 辞書の定義 Adict = {Days: [Mon,Tue,wed,Thu], time: 2 pm, Subjects: [Phy,Che