Длина списка в Python: функция len() и методы работы с массивами

Часто кажется, что узнать длину списка в Python — задача из серии «тривиально». Но на практике, особенно если ты работаешь с массивами данных в реальных проектах (будь то парсинг, DevOps-скрипты или просто автоматизация), нюансов хватает. Не только len() — есть ещё методы, грабли, и нюансы, которые могут сэкономить кучу времени или, наоборот, всё сломать. Так что разберёмся, как правильно работать с длиной списков и массивов в Python, чтобы не наступать на одни и те же грабли.

Возможности

  • Быстро узнать количество элементов в списке, tuple, set, dict и других коллекциях.
  • Работать с массивами из сторонних библиотек (например, numpy).
  • Чекать вложенные структуры (двумерные массивы, списки списков и т.д.).
  • Писать универсальный код для разных типов данных.

Что требуется

  • Python версии 3.6+ (но подойдёт и 2.7, если ты совсем олдскул, но не советую).
  • ОС — любая: Linux, macOS, Windows, хоть Raspberry Pi.
  • Железо — любое, где работает Python (даже на VPS хватит пары мегабайт RAM).
  • Если нужны массивы — NumPy (опционально).

Установка — пошаговая инструкция

  1. Проверь установлен ли Python:
    python --version

    или

    python3 --version
  2. Если нужен NumPy (для работы с массивами):
    pip install numpy

    или, если у тебя несколько версий Python:

    python3 -m pip install numpy
  3. Открой любой редактор или консоль Python:
    python
    # или
    python3
    
  4. Создай список и попробуй узнать его длину:
    
    my_list = [1, 2, 3, 4, 5]
    print(len(my_list))
        

Использование: полный список команд и вариантов

Вот самые частые сценарии, которые встречаются у меня и коллег:

  • Длина обычного списка:
    
    my_list = ['devops', 'python', 'linux']
    print(len(my_list))  # 3
        
  • Длина строки (тоже последовательность!):
    
    my_str = "Hello, world!"
    print(len(my_str))  # 13
        
  • Длина кортежа (tuple):
    
    my_tuple = (1, 2, 3)
    print(len(my_tuple))  # 3
        
  • Длина множества (set):
    
    my_set = {1, 2, 3, 3}
    print(len(my_set))  # 3, дубликаты не считаются
        
  • Длина словаря (dict) — количество ключей:
    
    my_dict = {"a": 1, "b": 2}
    print(len(my_dict))  # 2
        
  • Длина массива NumPy:
    
    import numpy as np
    arr = np.array([1, 2, 3, 4])
    print(len(arr))  # 4
    print(arr.shape)  # (4,)
        

    Для многомерных массивов:

    
    matrix = np.array([[1, 2], [3, 4], [5, 6]])
    print(len(matrix))      # 3 (количество строк)
    print(matrix.shape)     # (3, 2)
    print(matrix.size)      # 6 (всего элементов)
        

Официальная дока: https://docs.python.org/3/library/functions.html#len

Ошибки, как делать не надо

  • len() не работает с числами:
    
    num = 123
    print(len(num))  # TypeError: object of type 'int' has no len()
        

    Числа — не коллекции!

  • len() не покажет длину вложенных списков:
    
    matrix = [[1,2], [3,4], [5,6]]
    print(len(matrix))  # 3, а не 6!
        

    Это количество строк, а не всех элементов.

  • Не путай len() и методы типа .count():
    
    my_list = [1,2,2,3]
    print(my_list.count(2))  # 2 — сколько раз встречается 2, а не длина списка!
        
  • len() не работает с генераторами напрямую:
    
    gen = (x for x in range(10))
    print(len(gen))  # TypeError
        

    Генераторы не знают своей длины. Нужно сначала сделать list(gen).

Пример реального использования в окружении

Представим, что у тебя скрипт, который мониторит логи и собирает уникальные IP-адреса за сутки:


unique_ips = set()
with open('/var/log/nginx/access.log') as f:
    for line in f:
        ip = line.split()[0]
        unique_ips.add(ip)

print("Уникальных IP за сутки:", len(unique_ips))

Или, если ты работаешь с массивами NumPy для анализа данных:


import numpy as np
data = np.genfromtxt('metrics.csv', delimiter=',')
print(f"Загружено строк: {len(data)}")
print(f"Размерность массива: {data.shape}")

Заключение

len() — это вроде бы базовая функция, но если не знать нюансов, можно легко получить не тот результат или словить ошибку. Работая с разными структурами данных, всегда смотри, что именно ты считаешь: элементы, строки, ключи, размерность. А если работаешь с массивами (NumPy, pandas), не забывай про .shape и .size. Ну и не пытайся узнать длину у того, что длины не имеет — Python тебе честно об этом скажет.

Официальные ссылки:
docs.python.org: len()
numpy.ndarray.shape

Хотите прочитать больше про Разное?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *