Python では、インデックスに基づいてリストから特定の要素を選択することが一般的な要件となる場合があります。最近提起された質問はこのシナリオに対処し、整数のリスト a とインデックスのリスト b を提示しました。目標は、b のインデックスに対応する a の要素を含む新しいリスト c を作成することでした。
提供されたソリューションでは、b のインデックスを反復処理し、a から適切な要素を選択するリスト内包表記を利用しました。
a = [-2, 1, 5, 3, 8, 5, 6] b = [1, 2, 5] c = [a[i] for i in b]
このアプローチは完全に有効ですが、目的を達成するためのより効率的な方法は存在するのかという疑問が生じました。 result.
Operator.itemgetter
代替ソリューションの 1 つは、Python のオペレーター モジュールからのoperator.itemgetter 関数の使用を伴います:
from operator import itemgetter a = [-2, 1, 5, 3, 8, 5, 6] b = [1, 2, 5] print(itemgetter(*b)(a))
Numpy 配列インデックス作成
パフォーマンスが重要な場合、NumPy は最適化された配列処理機能を提供します。
import numpy as np a = np.array([-2, 1, 5, 3, 8, 5, 6]) b = [1, 2, 5] print(list(a[b]))
ソリューションの評価
特に、リスト内包表記を使用した元のソリューションは依然として実行可能なオプションです。簡潔でわかりやすいです。 itemgetter メソッドと NumPy メソッドは潜在的なパフォーマンス上の利点をもたらしますが、小さなリストや速度がそれほど重要ではない状況では過剰になる可能性があります。
最終的に、どのメソッドを使用するかの選択は、サイズなどの要因によって決まります。リストとアプリケーションの特定のパフォーマンス要件の説明。
以上がPython でインデックスによって複数のリスト要素に効率的にアクセスする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。