Во-первых, я рекомендую вам использовать функцию для выполнения этой задачи, чтобы вы могли обращаться к ней в любое время.
Сначала я создал две функции ends_with_digit()
, которая проверяет, заканчивается ли строка числом или не используя int
функцию внутри оператора try
.
def ends_with_digit(string):
try:
int(string[-1])
except ValueError:
return False
return True
тогда, Вам нужна функция, которая возвращает последние элементы. Поскольку у вас есть 3d list
, вам нужно три цикла, чтобы выполнить sh задачу. после того, как вы проверите элемент, вы должны остановить l oop, если оператор равен True
, чтобы последний l oop не продолжал добавлять все элементы.
def last_digit_items(list):
out = []
for sub1 in list:
for sub2 in sub1:
for sub3 in reversed(sub2):
if ends_with_digit(sub3):
out.append(sub3)
break
return out
другой способ мог бы сделать это путем рекурсивной фильтрации списка с последующим индексированием последнего элемента каждого подсписка, но функция, описанная выше, значительно проще для вашего случая.
для проверки функции запустите следующий оператор печати
print(last_digit_items([[['F0','K4','N']], [['S', 'B2', 'A5']]]))
и он возвращает:
['K4', 'A5']