Списки в 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
для подсчета количества списков функциональным способом.