Pythonで複数のリストを同時にループ処理する方法
Pythonで複数のリストを同時にループ処理したい場合、最もシンプルなのはインデックス(外部イテレータ)を使って要素を追跡する方法です。なお、この方法はすべてのリストが同じ長さであることを前提としています。
方法1:range()とlen()を使う
リストの長さ分だけインデックスを生成し、各リストに同じインデックスでアクセスします。
a = [10, 12, 14, 16, 18]
b = [10, 8, 6, 4, 2]
for i in range(len(a)):
print(a[i] + b[i])
出力結果
20 20 20 20 20
方法2:zip()関数を使う(推奨)
よりPythonicな方法は zip() 関数を使うことです。zip() は複数のリストから対応する要素をまとめて取り出し、短い方のリストが終わった時点で自動的にループを終了します。
a = [10, 12, 14, 16, 18]
b = [10, 8, 6]
for (A, B) in zip(a, b):
print(A + B)
出力結果
20 20 20
上記の例では、リスト b の方が短いため、ループは3回で終了しています。
補足:異なる長さのリストを最後まで処理したい場合
Python 3.10以降では、zip(a, b, strict=True) を指定することで、リストの長さが異なる場合にエラーを発生させることができます。また、短い方に合わせて打ち切るのではなく、最も長いリストに合わせて最後まで処理したい場合は、標準ライブラリの itertools.zip_longest() を利用すると便利です。
from itertools import zip_longest
a = [10, 12, 14, 16, 18]
b = [10, 8, 6]
for A, B in zip_longest(a, b, fillvalue=0):
print(A + B)
この場合、足りない要素は fillvalue で指定した値(ここでは0)で埋められます。
-
PythonのBokehを使って複数の折れ線を可視化する方法
Bokehは、データ可視化を支援するためのPythonパッケージです。オープンソースプロジェクトとして公開されており、HTMLとJavaScriptを使用してグラフを描画します。そのため、Webベースのダッシュボードを作成する際に特に有用なライブラリとなっています。Bokehの仕組みBokehはデータソースをJSONファイルに変換します。このJSONファイルは、JavaScriptライブラリであるBokehJSへの入力として使用されます。BokehJSはTypeScriptで書かれており、最新のブラウザ上で可視化をレンダリングする役割を担っています。MatplotlibやSeabornが静的な
-
Pythonで複数のファイル名を一括変更する方法【os.rename()活用】
Python3では、rename()メソッドを使うことで、ファイルやディレクトリの名前を簡単に変更できます。このメソッドは標準ライブラリのosモジュールに含まれており、追加のインストールなしですぐに利用可能です。 os.rename() の基本構文 os.rename(src, dst) 各引数の意味は以下のとおりです。 src: 名前を変更したい元のファイル(またはディレクトリ)のパス dst: 変更後の新しい名前を含むパス それでは、複数の画像ファイルが入ったフォルダを例に、一括でファイル名を変更する方法を見ていきましょう。ここでは、次のような画像フォルダを使用します。 入力(変更前の