Форум сайта python.su
Привет!
С помощью метода index() я могу узнать порядковый номер по значению элемента списка.
Он находит первый элемент от начала списка
Есть ли возможность указать этому методу искать значение в обратном порядке?
т.е. от конца списка к началу
Офлайн
ну сделайте списку reverse ?
Офлайн
Не хотел лишних движений, надеялся, что какой-нибудь атрибут меняет направление поиска
Офлайн
panama555А никаких лишних телодвижений и нет, reversed давно уже генератор, оверхед минимальный. И да - он меняет направление поиска, ровно то, что вы хотели.
Не хотел лишних движений
Офлайн
Дело в том, что мне нужно искать номер последнего элемента, но потом приводить его в “нормальный ” вид
А это ещё строка кода
Например:
a=#надо найти индекс последней “4”- он равен 4
a.reverse()
b=a.index(“4”)# но теперь индекс равен 0
# превращаю в нужный вид
c= ( len(a)-1)-b# только теперь он равен 4
не очень лаконично
Отредактировано panama555 (Март 29, 2019 21:19:08)
Офлайн
Для строки есть .rindex()
>>> 'abcabc'.rindex('a') 3 >>>
Офлайн
>Есть ли возможность указать этому методу искать значение в обратном порядке?
>>> s = [1,2,3,3,4,54,1,2,3] >>> s.index(3,-1) 8
Офлайн
py.user.next
Ясно, спасибо
Rodegast
Этот вариант не подойдёт
Вы просто указываете аргумент start -1 и начинаете поиск c последнего элемента
но поиск всё равно слева-направо
Это никак не поможет
Отредактировано panama555 (Март 29, 2019 23:15:00)
Офлайн
panama555
l = [1,2,3,4,5,6,0,2,9,] found = 0 index = [x for x in enumerate(l) if x[1]==found][-1][0]
Офлайн
FishHook
Да, хороший способ. Обязательно использую. Спасибо
Офлайн