Подсчет количества вложенных списков в списке

Опубликован: 29.01.2024 88

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

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

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

Подсчет для списка с одним уровнем вложенности.

Этот способ подсчета использует встроенные функции isinstance(), sum() и генератор списка List comprehension, и позволяет подсчитать количество вложенных списков в простом двухуровневом списке.

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

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

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

Подсчет для многоуровневого списка с использованием рекурсии.

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

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

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

print(count_lists(multi_level_list))
6

В этом примере функция count_lists() принимает в качестве параметра список с любым уровнем вложенности multi_level_list и рекурсивно обходит его, а функция sum() суммирует количество найденных вложенных списков, для которых функция isinstance(i, list) возвращает True.

Похожие посты

Методы преобразования списка в строку и обратно

Удаление дубликатов из списка

Поэлементное суммирование списков (кортежей)

Преобразование строки числовых значений в список чисел

Комментариев нет.