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