質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

238閲覧

find()は最小のインデックスを返しますが最大のインデックスを返す方法はりますか?

aiueo04

総合スコア26

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

1クリップ

投稿2020/04/28 03:36

編集2020/04/28 03:45

例えばリスト内に[1,4,7,4,8,2,3,4,8,]のような要素があり4より小さい数の最大のインデックスを取り出す方法はありますか?
つまり右から探すということです

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

単純にインデックスを逆順に回すのが一番メモリ効率もCPU効率もいいです。

Python3

1l = [1,4,7,4,8,2,3,4,8] 2for i in range(len(l)-1, -1, -1): 3 if l[i] < 4: 4 print(i) 5 break 6# 6

あえて一行で書くなら、こんな風にも書けます。Python3のreversedはイテレータを返すので、リストのコピーは発生しません。

Python3

1l = [1, 4, 7, 4, 8, 2, 3, 4, 8] 2idx = next(len(l) - i -1 for i, x in enumerate(reversed(l)) if x < 4) 3print(idx) 4 5# 6

投稿2020/04/28 05:59

Kenji.Noguchi

総合スコア358

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aiueo04

2020/04/28 06:13

有り難う御座いました!!すごくさんこうになります!!
guest

0

ベストアンサー

内包表記

Python

1[i for i,d in enumerate(l) if d < 4]

にて 4 より小さい要素の Index値の一覧を取得できますので、この中の一番右のデータを

python

1[i for i,d in enumerate(l) if d < 4][-1]

のように求めるとよいのではないでしょうか

python

1l = [1,4,7,4,8,2,3,5,8] 2ret = [i for i,d in enumerate(l) if d < 4][-1] 3print(ret) 4# 6

投稿2020/04/28 03:59

編集2020/04/28 03:59
magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aiueo04

2020/04/28 04:03

すごいです!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問