Skip to content

Latest commit

 

History

History
174 lines (119 loc) · 11.7 KB

File metadata and controls

174 lines (119 loc) · 11.7 KB

Урок 11. Срезы списков. Сравнение списков

11.1 Срезы списка

Срез списка - это операция, которая позволяет получить подсписок из исходного списка.

Срез определяется с помощью указания начального и конечного индексов элементов списка, которые нужно включить в подсписок.

Синтаксис среза списка выглядит следующим образом:

список[начало:конец:шаг]

При этом элемент с индексом начала включается в подсписок, а элемент с индексом конца не включается.

Примеры использования срезов списков:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# Пример среза с двумя аргументами
sublist1 = numbers[2:5]
print(sublist1)  # [2, 3, 4]

# Пример среза с тремя аргументами
sublist2 = numbers[1:8:2]
print(sublist2)  # [1, 3, 5, 7]

11.2 Срезы с отрицательными индексами

Отрицательные индексы позволяют обращаться к элементам списка с конца. Например, индекс -1 соответствует последнему элементу, -2предпоследнему и так далее.

Срезы также могут использовать отрицательные индексы. Например, a[-3:] вернет последние три элемента списка.

Пример:

# Отрицательные индексы
a = [10, 20, 30, 40, 50]
print(a[-1])  # Вывод: 50
print(a[-2])  # Вывод: 40

# Срез с отрицательным индексом
print(a[-3:])  # Вывод: [30, 40, 50]

11.3 Шаги в срезах

Шаги в срезах позволяют выбирать элементы с определенным интервалом. Синтаксис среза с шагом выглядит как list[start:stop:step].

Пример:

# положительный шаг
b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(b[::2])  # Вывод: [0, 2, 4, 6, 8] (каждый второй элемент)
print(b[1::2])  # Вывод: [1, 3, 5, 7, 9] (каждый второй элемент, начиная с первого)

# отрицательный шаг
print(b[::-1])  # Вывод: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (весь список в обратном порядке)

11.4 Создания поверхностной копии списка с помощью среза

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

Пример:

original = [1, 2, 3, 4, 5]
copy = original[:]  # Создание копии
copy[0] = 10  # Изменяем копию
print(original)  # Вывод: [1, 2, 3, 4, 5] (оригинал не изменился)
print(copy)     # Вывод: [10, 2, 3, 4, 5] (копия изменена)

11.5 Изменение списка с помощью среза

Срез списка позволяет выбирать определенные элементы списка и изменять их значения.

numbers = [1, 2, 3, 4, 5]
numbers[1:4] = [10, 20, 30]
print(numbers)  # [1, 10, 20, 30, 5]

11.6 Использование срезов для удаления элементов из списка.

Срезы в Python можно использовать для удаления нескольких элементов из списка одновременно. Это делается путем присвоения пустого списка срезу.

Пример:

# удаление элементов с помощью присвоения пустого списка
my_list = [10, 20, 30, 40, 50]
my_list[1:3] = []  # Удаляем элементы с индексами 1 и 2
print(my_list)  # Вывод: [10, 40, 50]

11.7 Ошибка или пустой список.

При попытке доступа к элементу по индексу, который выходит за границы списка, Python выдаст ошибку IndexError. Однако, если вы используете срезы, Python вернет пустой список, если границы указаны неверно.

Пример:

c = [1, 2, 3]
print(c[5:])  # Вывод: [] (пустой список)
print(c[1:5])  # Вывод: [2, 3] (срез работает корректно)
print(c[5])  # Ошибка: IndexError: list index out of range

11.8 Сравнение списков.

Сравнение списков в Python выполняется с помощью операторов сравнения, таких как ==, !=, <, >, <= и >=.

  • Оператор == используется для проверки равенства двух списков. Если все элементы исходных списков равны и имеют одинаковый порядок, то результатом будет True, в противном случае - False.

  • Оператор != используется для проверки неравенства двух списков. Если хотя бы один элемент отличается или порядок элементов различается, то результатом будет True, в противном случае - False.

  • Операторы <, >, <= и >= используются для сравнения списков в лексикографическом порядке. Сравнение выполняется покомпонентно, начиная с первого элемента. Если первый отличающийся элемент в первом списке меньше (или больше) соответствующего элемента во втором списке, то результатом будет True, в противном случае - False.

    list1 = [1, 2, 3]
    list2 = [1, 2, 3]
    list3 = [4, 5, 6]
    
    print(list1 == list2)  # True
    print(list1 != list3)  # True
    print(list1 < list3)   # True
    print(list1 > list3)   # False

Вопросы:

  1. Что такое срез списка и как его использовать?
  2. Как можно использовать отрицательные индексы в срезах?
  3. Что такое шаги в срезах и как они работают?
  4. Как создать поверхностную копию списка с помощью среза?
  5. Как изменить элементы списка с помощью среза?
  6. Что произойдет, если срез списка будет выходить за границы его длины?
  7. Как сравнивать два списка в Python?
  8. Какой результат будет, если сравнить два списка с одинаковыми элементами, но в разном порядке?
  9. Как можно использовать срезы для удаления элементов из списка?
  10. Что такое ошибка IndexError и когда она возникает при работе со срезами?
  11. Какой результат сравнения будет получен при выполнении команды: [1, 2, 3] > [1, 1, 10]
  12. Какой результат сравнения будет получен при выполнении команды: [1, 2, 3] < [1, 2, 3, 4]
  13. Какой результат сравнения будет получен при выполнении команды: [1, 2, 3] >= [1, 2, 3]
  14. Какой результат сравнения будет получен при выполнении команды: [1, 2, 3, "4"] > [1, 2, 3, "5"]
  15. Какой результат сравнения будет получен при выполнении команды: [1, 2, 3, 7] > [1, 2, 3, "5"]

Задачи:

  1. Объявите в программе следующий список: my_list = [10, 20, 30, 40, 50]. С помощью среза создайте новый список, содержащий элементы с индексами 0, 2 и 4.

  2. Объявите в программе следующий список: my_list = [5, 10, 15, 20, 25]. Удалите элементы с индексами 1 и 2.

  3. Объявите в программе следующий список: my_list = [1205, 1101, 1434, 1320, 923, 874]. Выберите из списка my_list первые три значения и выведите этот срез как список на экран.

  4. Объявите в программе следующий список: my_list = [10, 20, 30, 40, 50, 60]. Создайте поверхностную копию списка с помощью среза и измените первый элемент в копии на 100. Выведите оба списка на экран.

  5. Объявите в программе следующий список: my_list = [1, 2, 3, 4, 5]. Используя срезы, измените элементы с индексами 1 и 2 на [20, 30]. Выведите изменённый список на экран.

  6. Объявите в программе следующий список с названиями городов: cities = ["Москва", "Ульяновск", "Самара", "Тверь", "Вологда", "Омск", "Уфа"]. С помощью срезов выберите из этого списка города через один и результат выведите на экран в виде полученного списка.

  7. Объявите в программе следующий список с названиями городов: cities = ["Москва", "Ульяновск", "Самара", "Тверь", "Вологда", "Омск", "Уфа"]. С помощью срезов выберите из этого списка города через один (начиная со второго) и результат выведите на экран в виде полученного списка.

  8. Объявите в программе следующий список с оценками студента: scores = [2, 3, 5, 5, 2, 2, 3, 3, 4, 5, 4, 4]. С помощью срезов выберите элементы с 3 по 7 (включительно) и выведите их на экран в виде списка в обратном порядке.

  9. Объявите в программе следующий список с оценками студента: scores = [2, 3, 5, 5, 2, 2, 3, 3, 4, 5, 4, 4]. С помощью срезов выберите элементы через один, начиная с последнего, и выведите результат (срез) на экран в виде списка.


Предыдущий урок | Следующий урок