Эффективный способ получения индекса списка, если определенный элемент существует в списке строк с помощью Python

#python #indexing

#python #индексирование

Вопрос:

Учитывая список строк, цель состоит в том, чтобы получить индекс для вхождения 0 .

Для достижения этой цели предлагается следующий код

 txt=['-100:200','-15:0','0:15','30:45']

all_t=[[int(idx) for idx in t.split(":")] for t in txt]
s_val=[]
for idx,mm in enumerate(all_t):
    if 0 in mm:
        s_val.append(idx)
 

Ожидаемый результат

 s_val=[1, 2]
 

Однако мне интересно, встроенный или более компактный / эффективный подход для достижения вышеуказанной цели?

Ответ №1:

 txt=['-100:200','-15:0','0:15','30:45']

print ([i for i in range(len(txt)) if '0' in txt[i].split(":")])
 

Вывод:

 [1,2]
 

Вы используете понимание списка для перебора каждого элемента txt по индексу i .

Затем вы просто проверяете условие: находится '0' в списке из .split(":") этого единственного элемента с заданным индексом.