Отличия reverse() от reversed(), sort() от sorted(), copy() от deepcopy()

В Python есть несколько методов и функций для изменения и копирования списков и других коллекций данных. Вот отличия между ними:

  1. reverse() и reversed():

    • reverse(): Это метод, который вызывается непосредственно на списке и изменяет порядок элементов в списке, переворачивая его в обратном порядке.

      my_list = [1, 2, 3, 4]
      my_list.reverse()
      print(my_list)  # Выведет [4, 3, 2, 1]
    • reversed(): Это функция, которая возвращает итератор, представляющий элементы в обратном порядке, но не изменяет исходный список.

      my_list = [1, 2, 3, 4]
      reversed_list = list(reversed(my_list))
      print(reversed_list)  # Выведет [4, 3, 2, 1]
  2. sort() и sorted():

    • sort(): Это метод, вызываемый непосредственно на списке, который сортирует элементы в списке в порядке возрастания (по умолчанию) и изменяет исходный список.

      my_list = [4, 1, 3, 2]
      my_list.sort()
      print(my_list)  # Выведет [1, 2, 3, 4]
    • sorted(): Это функция, которая возвращает новый отсортированный список, не изменяя исходный список.

      my_list = [4, 1, 3, 2]
      sorted_list = sorted(my_list)
      print(sorted_list)  # Выведет [1, 2, 3, 4]
  3. copy() и deepcopy():

    • copy(): Этот метод или функция создает поверхностную копию списка, что означает, что она копирует ссылки на объекты в списке, но не копирует объекты сами по себе. Если объекты в списке изменяются, это также отразится на копии.

      import copy
      my_list = [1, [2, 3], 4]
      shallow_copy = copy.copy(my_list)
    • deepcopy(): Этот метод или функция создает глубокую копию списка, что означает, что она копирует как список, так и все объекты, на которые он ссылается. Изменения в исходном списке не влияют на глубокую копию.

      import copy
      my_list = [1, [2, 3], 4]
      deep_copy = copy.deepcopy(my_list)

Last updated