Могучие срезы
К счастью, решение всегда у вас под рукой - оно называется срез.
Срез - это элемент синтаксиса Python, который позволяет Вам создавать новую копию списка или его частей.
Фактически он копирует содержимое списка, а не его имя.
Это именно то, что вам нужно. Взгляните на приведенный ниже фрагмент кода:
list_1 = [1]
list_2 = list_1[:]
list_1[0] = 2
print(list_2)
Он выведет [1]
.
Эта незаметная часть кода, описанная как [:]
, может создавать совершенно новый список.
Одна из наиболее общих форм среза выглядит следующим образом:
my_list[start:end]
Как видите, это похоже на индексацию, но двоеточие внутри имеет большое значение.
Срез этой формы создает новый (целевой) список, беря элементы из исходного списка - элементы с индексами от начала до end - 1
.
Примечание: не до end
, а до end - 1
. Элемент с индексом, равным end
, является первым элементом, не участвующим в нарезке.
Возможно использование отрицательных значений как для начала, так и для конца (как при индексации).
Посмотрите на фрагмент кода:
my_list = [10, 8, 6, 4, 2]
new_list = my_list[1:3]
print(new_list)
В списке new_list
будет end - start
(3 - 1 = 2) элементов - с индексами, равными 1
и 2
(но не 3
).
Вывод кода: [8, 6]