Подтвердить что ты не робот

Python: получать индексы списка с использованием регулярного выражения?

В Python, как вы получаете позицию элемента в списке (используя list.index) с использованием нечеткого соответствия?

Например, как получить индексы всех фруктов формы *berry в следующем списке?

fruit_list = ['raspberry', 'apple', 'strawberry']
# Is it possible to do something like the following?
berry_fruit_at_positions = fruit_list.index('*berry') 

У кого-нибудь есть идеи?

4b9b3361

Ответ 1

Try:

fruit_list = ['raspberry', 'apple', 'strawberry']
[ i for i, word in enumerate(fruit_list) if word.endswith('berry') ]

возвращает:

[0, 2]

Замените endswith другой логикой в ​​соответствии с вашими потребностями.

Ответ 2

С регулярными выражениями:

import re
fruit_list = ['raspberry', 'apple', 'strawberry']
berry_idx = [i for i, item in enumerate(fruit_list) if re.search('berry$', item)]

И без регулярных выражений:

fruit_list = ['raspberry', 'apple', 'strawberry']
berry_idx = [i for i, item in enumerate(fruit_list) if item.endswith('berry')]