panama555
Март 29, 2019 19:09:17
Привет!
С помощью метода index() я могу узнать порядковый номер по значению элемента списка.
Он находит первый элемент от начала списка
Есть ли возможность указать этому методу искать значение в обратном порядке?
т.е. от конца списка к началу
FishHook
Март 29, 2019 19:11:22
ну сделайте списку reverse ?
panama555
Март 29, 2019 19:21:54
Не хотел лишних движений, надеялся, что какой-нибудь атрибут меняет направление поиска
FishHook
Март 29, 2019 19:33:47
panama555
Не хотел лишних движений
А никаких лишних телодвижений и нет, reversed давно уже генератор, оверхед минимальный. И да - он меняет направление поиска, ровно то, что вы хотели.
panama555
Март 29, 2019 21:18:48
Дело в том, что мне нужно искать номер последнего элемента, но потом приводить его в “нормальный ” вид
А это ещё строка кода
Например:
a=#надо найти индекс последней “4”- он равен 4
a.reverse()
b=a.index(“4”)# но теперь индекс равен 0
# превращаю в нужный вид
c= ( len(a)-1)-b# только теперь он равен 4
не очень лаконично
py.user.next
Март 29, 2019 22:02:37
Для строки есть .rindex()
>>> 'abcabc'.rindex('a')
3
>>>
Для списка это слишком специфичное действие, чтобы делать для этого метод и встраивать его в язык.
Rodegast
Март 29, 2019 22:13:53
>Есть ли возможность указать этому методу искать значение в обратном порядке?
>>> s = [1,2,3,3,4,54,1,2,3]
>>> s.index(3,-1)
8
panama555
Март 29, 2019 23:14:15
py.user.next
Ясно, спасибо
Rodegast
Этот вариант не подойдёт
Вы просто указываете аргумент start -1 и начинаете поиск c последнего элемента
но поиск всё равно слева-направо
Это никак не поможет
FishHook
Март 30, 2019 07:30:04
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]
panama555
Март 30, 2019 11:04:55
FishHook
Да, хороший способ. Обязательно использую. Спасибо