Автор оригинала: Shubham Sayon.
Резюме: Один из следующих методов может быть использован для проверки, если список пуст: –
- Метод 1: Использование Isinstance () С любой()
- Метод 2: Использование методов IsinStance () и Len () внутри цикла
Проблема: Учитывая список; Как проверить, если он вложен или нет?
Учитывая, что у вас есть список так, что он вложен в то время, когда иногда он не вложен. Исходя из того, будет ли он вложен или не продолжение потока вашего программа будет другим. Например, вы кормите список в dataframe
Отказ Код для этого отличается в зависимости от того, является ли список плоским или вложенным. Сравнивая вложенный список дает различную структуру к данным. Таким образом, вам нужно поддерживать структуру. Итак, как бы вы могли отличить и распознать вложенный список из сплющенного списка (не вложенный список)?
Пример:
[a,b,c] # Output: --> False [[1,2,3],[4,5,6]] # Output --> True
В этой статье давайте быстро обсудим методы, которые можно использовать для проверки, если данный список вложен или нет. Итак, без дальнейшей задержки давайте погрузимся в решения.
Способ 1: Использование IsinStance () с любым ()
Самое простое решение нашей проблемы состоит в том, чтобы использовать Isinstance ()
Метод и выражение генератора внутри любой ()
функция. Перед погружением в решение, давайте понять использование Isinstance ()
и любой ()
Методы, которые помогут нам проверить список, если оно вложено или нет.
◉ Isinstance это встроенный метод в Python, который возвращает Правда
Когда указанный объект является экземпляром указанного типа, в противном случае он возвращает Ложь
Отказ
Синтаксис:
Пример:
a = isinstance(25, int) print(a)
Выход:
True
◉ любой ()
это встроенная функция, которая возвращает Правда
Если какой-либо элемент в итоге это Правда
иначе он возвращает Ложь
Отказ
Синтаксис:
любой (итеративный)
Пример:
li = [0, 10, 100, 1000] x = any(li) # Returns True because the first item is True print(x)
Выход:
True
Теперь, когда мы знаем использование каждой функции, давайте посмотрим на решение нашей проблемы. Пожалуйста, следуйте указанному ниже, которое демонстрирует решение.
Решение
li_1 = [1, 2, 3] # flat list li_2 = [[1, 2, 3], [4, 5, 6]] # nested list # Testing for nested list li_1_output = any(isinstance(i, list) for i in li_1) li_2_output = any(isinstance(i, list) for i in li_2) # Printing output print("Is li_1 Nested?", li_1_output) print("IS li_2 Nested?", li_2_output)
Выход:
Is li_1 Nested? False IS li_2 Nested? True
Объяснение
В приведенном выше Кодекс любой ()
Способ позволяет нам проверить каждое появление списка, пока Isinstance ()
Способ проверки Если каждый экземпляр элемента внутри списка представляет собой сам список или нет. Поэтому в первом случае выходной выход Ложь
Поскольку Python не находит никакого возникновения другого списка в … li_1 В то время как во втором случае он находит пару списков в родительском списке
li_2 И это возвращает
Правда Отказ
Метод 2: Использование методов IsinStance () и Len () внутри цикла
Еще одна работа для нашей проблемы состоит в том, чтобы использовать переменную счетчика, которая подсчитывает количество элементов в списке и сравнить его с фактической длиной списка. Если длина списка равна количеству элементов в списке, то это не вложенный список, в противном случае это вложенный список. Давайте посмотрим на программу, приведенную ниже, которая демонстрирует эту концепцию. (Пожалуйста, следуйте инструкциям вместе с кодом для лучшего понимания.)
li_1 = [1, 2, 3] # flat list li_2 = [[1, 2, 3], [4, 5, 6]] # nested list # function to evaluate if the list is nested or not def count(l): flag = 0 # counter variable to keep count of the number of elements in the list # iterate through the elements of the list for item in l: # check if the item is a list (iterable) or not if isinstance(item, list): flag = flag + len(item) else: flag = flag + 1 return flag x = count(li_1) print("Is li_1 Nested? ", bool(x != len(li_1))) y = count(li_2) print("Is li_2 Nested? ", bool(len(li_2) != y))
Выход:
Is li_1 Nested? False Is li_2 Nested? True
Молптонический путь
Еще один интересный подход может быть преобразовать данный список в массив, используя Numpy Library Отказ Кроме того, если вы работаете с наборами набора данных, то вполне возможно, что вы имеете дело с массивами вместо списков, что делает его еще более разумным для обсуждения Numpythonic способ приближения к нашей проблеме. При работе с массивами наша задача становится чрезвычайно легкой, потому что все, что нам нужно сделать сейчас, – это проверить, является ли данный массив одномерный множество.
#Note: NDIM
Атрибут позволяет нам найти размерность массива и Размер ()
Способ позволяет нам найти количество элементов массива вдоль заданной оси.
Давайте посмотрим на следующую программу, которая поможет нам понять, как легко мы можем вывести, если данный список вложен или нет, преобразовав его в массив.
import numpy as np li_1 = [[1, 2, 3, 4], [5, 6, 7, 8]] li_2 = [1, 2, 3, 4, 5] arr_1 = np.array(li_1) arr_2 = np.array(li_2) print("Is arr_1 nested? ", bool(arr_1.ndim > 1)) print("Is arr_2 nested? ", bool(arr_2.ndim > 1))
Выход:
Is arr_1 nested? True Is arr_2 nested? False
Редактировать: Если вы хотите узнать Numpy на основе обучения на основе головоломки, вы можете быть очарованы, чтобы посмотреть эту удивительную книгу, опубликованную Крис Кто помогает вам учиться с помощью головоломок в этой книге.
Вы хотите стать Numpy Master? Проверьте нашу интерактивную книгу головоломки Coffe Break Numpy И повысить свои навыки науки о данных! (Ссылка Amazon открывается на новой вкладке.)
Заключение
Я надеюсь, что методы, обсуждаемые в этой статье, помогли вам узнать некоторые очень основные, но очень важные концепции, которые можно использовать для проверки, если список вложена или нет. Основные концепции, обсуждаемые в этой статье, были:
- Использование
Isinstance ()
илюбой ()
Методы для проверки, если данный список вложен? Мы также обсудили каждый метод вкратце до достижения окончательного решения. - Использование
Isinstance ()
ИЛен ()
Методы внутри для петли для проверки, если данный список вложен? - Используя
numpy
Библиотека для проверки, если данный список вложен?
С этим мы дойдете до конца этой статьи; Пожалуйста, подпишитесь и оставайтесь настроенными для более интересных статей!
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @: