Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2018 19:56:01

polin11
Зарегистрирован: 2013-05-02
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужно получить последний ненулевой элемент в строке

Есть строка из цифр, нужно получить последний ненулевой элемент
есть 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, 2018 20:07:19)

Офлайн

#2 Ноя. 11, 2018 20:26:45

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Нужно получить последний ненулевой элемент в строке

polin11
Есть строка из цифр, нужно получить последний ненулевой элемент
У вас есть строка? Так работайте с ней как со строкой:
 code = '120300'
print(code.rstrip('0')[-1])

Офлайн

#3 Ноя. 12, 2018 00:30:28

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10031
Репутация: +  857  -
Профиль   Отправить e-mail  

Нужно получить последний ненулевой элемент в строке

Если общий вариант взять (не только для строки)

  
>>> def last_nonzero(s):
...     tup = tuple(i for i in s if i != '0')
...     return (tup and tup[-1]) or None
... 
>>> last_nonzero('')
>>> last_nonzero('0')
>>> last_nonzero('1')
'1'
>>> last_nonzero('120300')
'3'
>>> last_nonzero('1203')
'3'
>>>



Отредактировано py.user.next (Ноя. 12, 2018 00:34:27)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version