Уведомления

Группа в Telegram: @pythonsu

#1 Март 29, 2019 19:09:17

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

как сделать index в обратную сторону?

Привет!
С помощью метода index() я могу узнать порядковый номер по значению элемента списка.
Он находит первый элемент от начала списка
Есть ли возможность указать этому методу искать значение в обратном порядке?
т.е. от конца списка к началу

Офлайн

#2 Март 29, 2019 19:11:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как сделать index в обратную сторону?

ну сделайте списку reverse ?



Офлайн

#3 Март 29, 2019 19:21:54

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

как сделать index в обратную сторону?

Не хотел лишних движений, надеялся, что какой-нибудь атрибут меняет направление поиска

Офлайн

#4 Март 29, 2019 19:33:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как сделать index в обратную сторону?

panama555
Не хотел лишних движений
А никаких лишних телодвижений и нет, reversed давно уже генератор, оверхед минимальный. И да - он меняет направление поиска, ровно то, что вы хотели.



Офлайн

#5 Март 29, 2019 21:18:48

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

как сделать index в обратную сторону?

Дело в том, что мне нужно искать номер последнего элемента, но потом приводить его в “нормальный ” вид
А это ещё строка кода

Например:
a=#надо найти индекс последней “4”- он равен 4
a.reverse()
b=a.index(“4”)# но теперь индекс равен 0
# превращаю в нужный вид
c= ( len(a)-1)-b# только теперь он равен 4
не очень лаконично

Отредактировано panama555 (Март 29, 2019 21:19:08)

Офлайн

#6 Март 29, 2019 22:02:37

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9998
Репутация: +  857  -
Профиль   Отправить e-mail  

как сделать index в обратную сторону?

Для строки есть .rindex()

  
>>> 'abcabc'.rindex('a')
3
>>>

Для списка это слишком специфичное действие, чтобы делать для этого метод и встраивать его в язык.



Офлайн

#7 Март 29, 2019 22:13:53

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2828
Репутация: +  185  -
Профиль   Отправить e-mail  

как сделать index в обратную сторону?

>Есть ли возможность указать этому методу искать значение в обратном порядке?

 >>> s = [1,2,3,3,4,54,1,2,3]
>>> s.index(3,-1)
8



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Март 29, 2019 23:14:15

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

как сделать index в обратную сторону?

py.user.next
Ясно, спасибо
Rodegast
Этот вариант не подойдёт
Вы просто указываете аргумент start -1 и начинаете поиск c последнего элемента
но поиск всё равно слева-направо
Это никак не поможет


Отредактировано panama555 (Март 29, 2019 23:15:00)

Офлайн

#9 Март 30, 2019 07:30:04

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как сделать index в обратную сторону?

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]



Офлайн

#10 Март 30, 2019 11:04:55

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

как сделать index в обратную сторону?

FishHook
Да, хороший способ. Обязательно использую. Спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version