Что общего между строкой и списком (массивом) в 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 символов='втМр'