[解決済み] Python: 渡された関数を真にするリストの最初の要素のインデックスを返す
2023-05-12 04:38:35
質問
質問
list.index(x)
関数は、その値が
x
.
機能はありますか。
list_func_index()
と同じような
index()
という関数を持っています。
f()
をパラメータとする関数です。この関数は
f()
は全ての要素に対して実行される。
e
まで、リストの
f(e)
が返す
True
. 次に
list_func_index()
のインデックスを返します。
e
.
コードワイズ
>>> def list_func_index(lst, func):
for i in range(len(lst)):
if func(lst[i]):
return i
raise ValueError('no element making func True')
>>> l = [8,10,4,5,7]
>>> def is_odd(x): return x % 2 != 0
>>> list_func_index(l,is_odd)
3
もっとエレガントな解決策はないのでしょうか?(そしてこの関数のより良い名前も)
どのように解決するのですか?
ジェネレータを使ってワンライナーでできますよ。
next(i for i,v in enumerate(l) if is_odd(v))
ジェネレータの良いところは、要求された量までしか計算しないことです。そのため、最初の2つのインデックスを要求するのは(ほとんど)簡単です。
y = (i for i,v in enumerate(l) if is_odd(v))
x1 = next(y)
x2 = next(y)
しかし、最後のインデックスの後にStopIteration例外が発生することが予想されます(これがジェネレータの動作方法です)。これはまた、そのような値が見つからなかったことを知るために、あなたの "take-first" アプローチで便利です。
関連
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] print関数の出力をフラッシュする(pythonの出力をバッファリング解除する)にはどうすればよいですか?
-
[解決済み] リストから最初の項目を削除するには?
-
[解決済み] Pythonの変数名や関数名の命名規則について教えてください。
-
[解決済み] リスト/タプルを指定されたインデックスにある要素でソートするには?
-
[解決済み】Pythonで辞書のキーをリストとして返すには?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] イテレートから条件に合致する最初の項目を取得する
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] pandasのタイムゾーンに対応したDateTimeIndexを、特定のタイムゾーンに対応したナイーブなタイムスタンプに変換する。
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] 新しいpip backtrackingの実行時問題の解決