Python: как работать с индексацией строк и списков

Что общего между строкой и списком (массивом) в Python?

Список — это массив элементов с упорядоченным индексом, начиная от 0.

Строка — это список символов с упорядоченным индексом, начиная от 0.

array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
text = "Привет Мир!"

# получим индекс первого элемента для списка и строки, указав их значения
print(f"Индекс 1-го элемента в массиве: {array.index(1)}, в строке: {text.index('П')}")

# ПОЛУЧИМ:
# Индекс 1-го элемента в массиве: 0, в строке: 0

Индексирование для списка и строки происходит одинаково, причем в Python поддерживается и отрицательная индексация.

Индекс (положительный) 0 1 2 3 4 5 6 7 8 9 10
array 1 2 3 4 5 6 7 8 9 10 11
text П р и в е т М и р !
Индекс (отрицательный) -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

Таким образом, можно обратиться к любому элементу строки или списка, указав его индекс:

print(f"array: первый_элемент='{array[0]}', последний_элемент='{array[-1]}'")
print(f"text: первый_элемент='{text[0]}', последний_элемент='{text[-1]}'")

# ПОЛУЧИМ:
# array: первый_элемент='1', последний_элемент='11'
# text: первый_элемент='П', последний_элемент='!'

Разделение строк и списков в Python

Используя индексирование для строк и списков, мы можем вырезать из них нужный нам набор данных.

# формат для разделения строк и списков
text_or_array[индекс_начала:индекс_конца:шаг]

Указав начальный и конечный индекс, можно вырезать часть строки или списка. Причем, если не указывать конечный индекс, то python обрежет до конца строки.

# вывести первые 3 элемента
print(f"array: способ1='{array[0:3]}', способ2='{array[-11:-8]}'")
print(f"text: способ1='{text[0:3]}', способ2='{text[-11:-8]}'")

# ПОЛУЧИМ:
# array: способ1='[1, 2, 3]', способ2='[1, 2, 3]'
# text: способ1='При', способ2='При'

# вывести последние 3 элемента
print(f"array: способ1='{array[8:]}', способ2='{array[-3:]}'")
print(f"text: способ1='{text[8:]}', способ2='{text[-3:]}'")

# ПОЛУЧИМ:
# array: способ1='[9, 10, 11]', способ2='[9, 10, 11]'
# text: способ1='ир!', способ2='ир!'

Также можно вырезать указав шаг в 3-м параметре, например, шаг «2» означает каждый 2-й символ, шаг «3» — каждый 3-й и т.д.

print(f"array: нечетные='{array[0::2]}', четные='{array[1::2]}'")
print(f"text: каждый 3 символ='{text[0::3]}', четные для последних 8 символов='{text[-8::2]}'")

# ПОЛУЧИМ:
# array: нечетные='[1, 3, 5, 7, 9, 11]', четные='[2, 4, 6, 8, 10]'
# text: каждый 3 символ='Пв р', четные для последних 8 символов='втМр'

 

Рейтинг
( 76 оценок, среднее 3.3 из 5 )
Понравилась статья? Поделиться с друзьями: