Поиск индекса последнего элемента на основе условия - PullRequest
0 голосов
/ 21 января 2019

У меня есть список строк, например,

lst = ['2', '\n', '4', '\n', '\n']

Я пытаюсь определить индексную точку последнего строкового элемента, который не является \ n. В приведенном выше примере индексной точкой будет 2, так как «4» является последним элементом, значение которого не равно «\ n».

Я могу легко найти первое вхождение '\ n' и т. Д .:

lst.index('\n') 

Есть ли способ найти последнее вхождение элемента, который НЕ принадлежит конкретному строковому символу?

1 Ответ

0 голосов
/ 21 января 2019

Вы можете использовать next с enumerate, затем вычесть результат из длины вашего списка:

lst = ['2', '\n', '4', '\n', '\n']
idx = len(lst) - next(i for i, val in enumerate(reversed(lst), 1) if val != '\n')  # 2

Или, в соответствии с предложением @Chris_Rands, выполнить итерацию в обратном направлении через range, который ведет обратный отсчет:

idx = next(i for i in range(len(lst)-1, -1, -1) if lst[i] != '\n')  # 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...