Форум сайта python.su
Встретил пример, питон тьюторе в разделе, посвященном изучению массивов и операций с ними такой любопытный код, который я понимаю интуитивно - что он именно делает. Не понятно значение только одной конструкции. Поясните мне его, пожалуйста.
# дано: s = ‘ab12c59p7dq’
# надо: извлечь цифры в список digits,
# чтобы стало так:
# digits ==
s = ‘ab12c59p7dq’
digits =
for symbol in s:
if ‘1234567890’.find(symbol) != -1:
digits.append(int(symbol))
print(digits)
Что значит != -1? Оператор != означает, насколько помню, верно, что не равно.
Почему, если в коде меняешь значение параметра с -1 на другой, интерпретатор выдает ошибку, что невозможно преобразовать строку “а” в целое число? Загадочная роль конструкции не гуглится. Я смутно понимаю, что -1 один здесь скорее всего описывает ход по массиву s слева-направо, проверяя встречается ли какой нибудь из символов в рамках конструкции if в строке или нет. Если нет, начинается новая итерация. Вопрос: она задается этим выражением != - 1 или что это тогда значит?
Вопрос наверняка очень глупый, но тем не менее, прошу на него ответить.
С уважением. И всем привет.
Офлайн
Из документации: help(str.find) – следует, что метод find находит минимальный индекс, с которого данная подстрока входит в строку, к которой этот метод применяется. Если такой индекс не найден, то возвращается -1.
Например:
'bubble gum'.find('gu') ==> 7
'bubble gum'.find('c') ==> -1 # так как <c> нету в строке <buuble gum>
Таким образом, условие: <if ‘1234567890’.find(symbol) != -1 > означает, что текущий символ входит в строку <123…0>,
т.е. означает, что символ – это цифра.
Также это условие можно было бы заменить на <if symbol.isdigit():>
Офлайн