04.11.2024

Срезы строк в Питоне: обработка, индексация и практические примеры

Для решения задач частенько требуются строки и умение их обрабатывать. В этой публикации покажем некоторые примеры работы со строками с использованием срезов.

Что такое строка в Python

Последовательность символов, заключенная в апострофы 'HELLO'

s = 'HELLO'

Нумерация символов в строке ведется с 0.

Обращение к символу строки (индексация)

s = 'HELLO'

s[0] # символ 'H'

s[1] # символ 'E'

s[-1] #последний символ 'O'

s[-2] #предпоследний символ 'L'

Срезы строк (части строки) в Python

строка[нач_поз: кон_поз: шаг] 

Важно: символ с индексом кон_поз не включается в результат.

Рассмотрим строку s = '0123456789' и различные варианты срезов:

СрезРезультатПояснение
s[0:9]012345678Символы с индексами от 0 до 8 (9 не вкл.)
s[1:]123456789Если не указать конец, срез идет до конца строки.
s[:7]0123456Если не указать начало, срез идет от начала строки.
s[1:8:2]1357Берем каждый второй символ (шаг 2) с индекса 1 по 7.
s[::-1]9876543210Отрицательный шаг переворачивает строку (реверс).

Решение практической задачи: двоичная запись числа

Задача. Вводится натуральное число. Записать это число в двоичной системе счисления, перевернуть и отбросить ведущие нули.

Пример:

N = 4410 = 1011002

Перевернутая двоичная запись: 001101

Двоичная запись без ведущих нулей: 1101

Как будем решать задачу

  1. Введем число n
  2. Переведем число n  в двоичную систему функцией bin(), получим строку s
    s = bin(n)
    для n = 44 получим s = '0b101100'
  3. Возьмем срез s[2:], избавимся от первых двух знаков '0b' 
    s = s[2:]
  4. Перевернем запись срезом s[::-1]
  5. Найдем в перевернутой строке позицию первой единицы методом s.find('1')
    pos = s.find('1')
  6. Возьмем срез с найденной позиции до конца строки
    s = s[pos:]

Программа решения задачи на языке Python

n = int(input('Введи натуральное число: '))

s = bin(n)

s = s[2:]

s = s[::-1]

pos = s.find('1')

s = s[pos:]

print(s)

Результат запуска программы

Введи натуральное число: 100

10011

Покороче

s = bin(n)[2:][::-1]

s = s[s.find('1'):]

Комментариев нет:

Отправить комментарий