Sobes.tech
Back to questions
Junior — Middle
59

Можно ли использовать встроенную функцию len() для определения длины односвязного списка в Python?

Answer from AI

sobes.tech AI

Встроенная функция len() в Python не работает для односвязных списков, если они реализованы самостоятельно (например, через узлы с указателем на следующий элемент). len() работает с последовательностями и коллекциями, которые реализуют метод __len__().

Если у вас есть класс односвязного списка, то для получения длины нужно либо:

  • Хранить счетчик элементов внутри класса и обновлять его при добавлении/удалении
  • Или пройтись по всем узлам и посчитать количество вручную

Пример подсчёта длины односвязного списка:

class Node:
    def __init__(self, value):
        self.value = value
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def length(self):
        count = 0
        current = self.head
        while current:
            count += 1
            current = current.next
        return count

Таким образом, len() напрямую использовать нельзя, если не реализовать метод __len__ в классе списка.