Pythonのリストで連続する要素をペアにする方法
Pythonでデータ分析を行っていると、リスト内の隣接する(連続する)要素同士をペアとして取り出したい場面に出会うことがあります。本記事では、この処理を実現するための代表的な2つの方法を、サンプルコードとともにわかりやすく解説します。
インデックスとrangeを組み合わせる方法
まずは、リストの連続するインデックスを組み合わせてペアを作る式を設計する方法です。range関数に「リストの長さ − 1」を渡すことで、ペアリングを繰り返す最大回数を決定します。これにより、最後の要素にアクセスする際に範囲外エラーが発生するのを防いでいます。
サンプルコード
listA = [51,23,11,45]
# 対象のリスト
print("Given list A: ", listA)
# リスト内包表記で隣接要素のペアを作成
res = [[listA[i], listA[i + 1]]
for i in range(len(listA) - 1)]
# 結果を出力
print("The list with paired elements: \n",res)実行結果
上記のコードを実行すると、以下の出力が得られます。
Given list A: [51, 23, 11, 45] The list with paired elements: [[51, 23], [23, 11], [11, 45]]
mapとzipを組み合わせる方法
次に、map関数とzip関数、そしてスライスを活用する方法です。元のリストと、先頭から1つずらしたリスト(listA[1:])をzip関数で組み合わせると、隣接する要素同士をタプルとして取得できます。その後、map関数で各タプルをリストに変換することで、目的の形式に整えています。
サンプルコード
listA = [51,23,11,45]
# 対象のリスト
print("Given list A: ", listA)
# zipとmapを使用してペアを作成
res = list(map(list, zip(listA, listA[1:])))
# 結果を出力
print("The list with paired elements: \n",res)実行結果
上記のコードを実行すると、以下の出力が得られます。
Given list A: [51, 23, 11, 45] The list with paired elements: [[51, 23], [23, 11], [11, 45]]
まとめ
どちらの方法でも同じ結果が得られます。リスト内包表記とrangeを使う方法は処理の流れが直感的で理解しやすく、zipとmapを使う方法はコードがより簡潔になるのが特徴です。可読性や用途に応じて、プロジェクトに合った方法を選択するとよいでしょう。
-
Pythonでリストから指定したインデックスの複数要素を削除する方法
Pythonのリストから単一の要素を削除するのは、del文とインデックスを組み合わせれば簡単に行えます。しかし、複数のインデックスに該当する要素をまとめて削除したいケースでは、少し工夫が必要です。本記事では、削除対象となるインデックスのリストを指定して、元のリストから該当する要素だけを取り除く方法を2つ紹介します。方法1:sorted()とdelを組み合わせるこのアプローチでは、まず削除したい位置(インデックス)を格納したリストを作成します。その後、降順にソートしてから後ろの要素から順に削除することで、削除処理中にインデックスがずれる問題を回避し、元のリストの構造を保ったまま安全に要素を削除で
-
【初心者向け】Pythonでリストのサイズ(要素数)を取得する方法
リスト(list)は、Pythonにおける代表的なコレクション型のデータ構造の一つです。リストの要素は後から変更でき、重複した値を持つこともできます。本記事では、Pythonでリストのサイズ(長さ)を取得する方法を解説します。具体的には、重複の有無にかかわらず、リストに含まれる全要素の数をカウントする方法を紹介します。リストの長さを取得する基本:len()関数Pythonでリストの要素数を取得するには、組み込み関数の len() を使用します。len() はリストだけでなく、タプル・文字列・辞書などさまざまなコレクションに対しても利用できる汎用的な関数です。サンプルコード以下の例では、「day