[解決済み] リストに値が存在するかどうかを確認する最速の方法
2022-03-20 04:20:30
質問
リスト(何百万もの値を含むリスト)に値が存在するかどうか、またそのインデックスが何であるかを知る最も速い方法は何でしょうか?
この例のように、リスト内のすべての値が一意であることは分かっています。
最初に試した方法は、(私の実際のコードでは3.8秒)です。
a = [4,2,3,1,5,6]
if a.count(7) == 1:
b=a.index(7)
"Do something with variable b"
2番目に試した方法は、(2倍速:私の実際のコードでは1.9秒)です。
a = [4,2,3,1,5,6]
try:
b=a.index(7)
except ValueError:
"Do nothing"
else:
"Do something with variable b"
Stack Overflow ユーザーからのメソッド提案 (私の実際のコードで 2.74 秒)。
a = [4,2,3,1,5,6]
if 7 in a:
a.index(7)
私の実際のコードでは、最初の方法は3.81秒、2番目の方法は1.88秒かかります。 良い改善ではあるのですが
Python/スクリプトの初心者なのですが、同じことをするのにもっと処理時間を短縮できる方法はないのでしょうか?
私のアプリケーションについて、より具体的に説明してください。
Blender APIでは、パーティクルのリストにアクセスすることができます。
particles = [1, 2, 3, 4, etc.]
そこから、パーティクルの位置にアクセスできるんだ。
particles[x].location = [x,y,z]
そして、各パーティクルについて、以下のように各パーティクルの位置を検索して、隣接するパーティクルが存在するかどうかをテストします。
if [x+1,y,z] in particles.location
"Find the identity of this neighbour particle in x:the particle's index
in the array"
particles.index([x+1,y,z])
解決方法は?
7 in a
最も明確で最速の方法。
を使用することも検討できます。
set
しかし、リストからそのセットを構築することは、より速いメンバーシップ・テストによって節約されるよりも多くの時間を要するかもしれません。確実な方法は、よくベンチマークを取ることです。(これはまた、あなたが必要とする操作に依存します)
関連
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonはWordの読み書きの変更操作を実装している
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です