Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2018, 21:00   #1
polin11
Форумчанин
 
Регистрация: 07.06.2015
Сообщений: 164
По умолчанию Нужно получить последний ненулевой элемент в строке.

Нужно получить последний ненулевой элемент в строке. Есть строка из цифр, нужно получить последний ненулевой элемент
есть 2 варианта:
Код:
1)
code = '120300' 
index= len(code) - [i for i, item in enumerate(list(code[::-1])) if item != '0'][0] - 1
print(index)
2) 
code = '120300'
for i, char in enumerate(code[::-1]):
    if char != '0':
        index = i
        break
index = len(code) - index - 1
print(index)
Кто может подсказать более элегантное решение?

Последний раз редактировалось polin11; 11.11.2018 в 21:07.
polin11 вне форума Ответить с цитированием
Старый 11.11.2018, 21:47   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
# s — строка
last_digit = next(filter(lambda x:x!='0', reversed(s)))
Проблема только если в строке все символы равны '0'.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 11.11.2018, 22:58   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Мне понравилось.
Можно добавить небольшой штрих:
Код:
# s — строка
last_digit = next(filter(lambda x:x!='0', reversed(s)), 'No')
Вместо 'No' может быть и другое подходящее для проверки значение.
Например:
Код:
# s — строка
last_digit = next(filter(lambda x:x!='0', reversed(s)), 'a')
if isdecimal(last_digit):
    print(last_digit)
Но это там ..., как дальше использовать.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 14.11.2018, 07:10   #4
strannik
python developer
Пользователь Подтвердите свой е-майл
 
Аватар для strannik
 
Регистрация: 30.11.2006
Сообщений: 81
По умолчанию

еще два варианта

Код:
out = '120300'.replace("0","")
print(out[-1]) if out else print("no")
Код:
out2 = ''.join([x for x in '120300' if x!='0'])
print(out2[-1]) if out2 else print("no")
Границы расширяет тот, кто выходит за них.
strannik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно получить последний элемент массива Наталья Баева JavaScript, Ajax 9 21.11.2016 09:31
Найти номер последней из строк, содержащих хотя бы один ненулевой элемент Funny111 Общие вопросы C/C++ 0 21.04.2014 09:28
массив каждый ненулевой элемент aij, что парную сумму i + j. заменить на обратный FYNZIK Паскаль, Turbo Pascal, PascalABC.NET 4 18.03.2014 23:27
Получить последний (правый) элемент пути Utkin Общие вопросы Delphi 9 14.06.2013 16:53
В каждой строке матрицы Y(5,5) определить последний отрицательный элемент и его индекс solodinka2007 Помощь студентам 0 03.10.2012 14:55