Подсчет количества списков в списке в Python

Эффективные подходы к подсчету вложенных списков в Python

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

Базовый подход к подсчету списков в списке

Давайте начнем с самого простого способа подсчета списков в списке. Мы будем использовать встроенную функцию type() и генератор списка (list comprehension):

# Исходный список
my_list = [[1, 2, 3], [4, 5, 6], 7, 8, [9, 10]]

# Подсчет количества списков в списке
count = sum(isinstance(i, list) for i in my_list)
print(count)  

#3

В этом коде isinstance(i, list) возвращает True, если элемент i является списком, и False в противном случае. sum() затем подсчитывает количество True значений.

Подсчет списков в многоуровневых списках

Приведенный выше код работает хорошо для одноуровневых списков. Однако, если у вас есть многоуровневый список (список, содержащий другие списки, которые также могут содержать списки и т.д.), вы должны применить рекурсивный подход.

# Функция для подсчета списков в многоуровневом списке
def count_lists(my_list):
    count = 0
    for i in my_list:
        if isinstance(i, list):
            count += 1 + count_lists(i)
    return count

# Исходный многоуровневый список
my_list = [[1, 2, [3, 4, [5, 6]]], 7, [8, [9, 10]]]

# Подсчет количества списков
print(count_lists(my_list))  

#5

Здесь функция count_lists() принимает список и рекурсивно обходит его, увеличивая счетчик на 1 для каждого списка, который она находит.

Использование модуля collections

Если вы предпочитаете функциональный стиль программирования, вы можете использовать модуль collections и его функцию Counter для подсчета количества списков:

from collections import Counter

# Исходный список
my_list = [[1, 2, 3], [4, 
5, 6], 7, 8, [9, 10]]

# Подсчет количества списков в списке
count = Counter(isinstance(i, list) for i in my_list)[True]
print(count) 

#3

В этом примере Counter() подсчитывает количество True и False значений, возвращаемых isinstance(i, list). Использование [True] возвращает количество True значений.

Заключение

В этой статье мы рассмотрели различные способы подсчета количества списков в списке в Python. Простейший подход заключается в использовании встроенных функций type() и sum(), но если у вас есть многоуровневые списки, вы должны применить рекурсивный подход. Вы также можете использовать модуль collections для подсчета количества списков функциональным способом.

Содержание: