[解決済み] Pythonです。リスト内検索
質問
こんなことに遭遇しました。
item = someSortOfSelection()
if item in myList:
doMySpecialFunction(item)
しかし、時々、すべての項目で動作しないことがあります。まるで、リスト(文字列のリストである場合)で認識されなかったかのように。
これは、リスト内の項目を見つける最も「パイソン的」な方法なのでしょうか。
if x in l:
?
解決方法は?
最初の質問ですが、そのコードは全く問題なく、次のような場合に動作するはずです。
item
の中の要素の1つに等しい。
myList
. を含まない文字列を探そうとするかもしれません。
まさに
のいずれかと一致するか、あるいは不正確な浮動小数点数を使用している可能性があります。
2つ目の質問についてですが リスト内のものを見つけるには、実はいくつかの方法があります。
中に入っているかどうか確認する
これは、あなたが説明したユースケースです。何かがリストの中にあるかどうかをチェックする。ご存知のように、あなたは
in
演算子を使うことができます。
3 in [1, 2, 3] # => True
コレクションをフィルタリングする
つまり、ある配列の中で、ある条件を満たすすべての要素を見つけることです。これにはリスト内包やジェネレータ式が使える。
matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
後者は ジェネレータ これは一種の遅延リストと考えることができ、繰り返し実行したときにのみ作成されます。ちなみに、最初のものは次のものと全く同じです。
matches = filter(fulfills_some_condition, lst)
をPython 2で作成しました。ここでは、高階関数が機能していることがわかります。Python 3では
filter
はリストではなく、ジェネレータのようなオブジェクトを返します。
最初の出現箇所を探す
ある条件にマッチする最初のものだけが欲しい (しかしそれが何であるかはまだわからない) 場合は、for ループを使ってもかまいません (場合によっては
else
節もありますが、これはあまり知られていません)。また
next(x for x in lst if ...)
で、最初にマッチしたものを返すか
StopIteration
を使用します。あるいは
next((x for x in lst if ...), [default value])
アイテムの位置を探す
また、リストについては
index
メソッドを使用すると便利です。
ここで
というように、ある要素がリストの中に入っています。
[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError
ただし、重複している場合は注意が必要です。
.index
は常に最も低いインデックスを返します:....
[1,2,3,2].index(2) # => 1
重複があり、すべてのインデックスが必要な場合は
enumerate()
の代わりに
[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]
関連
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] バイトを文字列に変換する
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] 複数行の長い文字列を作成するためのPythonicな方法
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] リスト内の重複を削除する
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
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の学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み】アイテムが配列/リストに含まれているかどうかを確認する