Как проверить, является ли элемент списка списком (в Python)?
Если у нас есть следующий список:
list = ['UMM', 'Uma', ['Ulaster','Ulter']]
Если мне нужно узнать, является ли элемент в списке сам по себе списком, что я могу заменить aValidList в следующем коде с?
for e in list:
if e == aValidList:
return True
есть ли специальный импорт для использования? Есть ли лучший способ проверить, является ли переменная / элемент списком?
3 ответа:
использовать
isinstance
:if isinstance(e, list):
если вы хотите проверить, что объект является списком или кортежем, передайте несколько классов в
isinstance
:if isinstance(e, (list, tuple)):
выясните, какие конкретные свойства
list
вы хотите, чтобы элементы имели. Должны ли они быть индексируемыми? Нарезка? Они нуждаются в.append()
способ?найдите абстрактный базовый класс, который описывает этот конкретный тип в
collections
модуль.использовать
isinstance
:isinstance(x, collections.MutableSequence)
вы можете спросить: "почему просто не использовать
type(x) == list
?" Вы не должны этого делать, потому что тогда вы не будете поддерживать вещи, которые выглядят как списки. И часть менталитета питона-это утиной типизацией:Я вижу птицу, которая ходит как утка, плавает как утка и крякает как утка, я называю эту птицу уткой
иными словами, вы не должны требовать, чтобы объекты
list
ы, просто у них есть методы, которые вам понадобятся. Элементcollections
модуль предоставляет кучу абстрактных базовых классов, которые немного похожи на интерфейсы Java. Любой тип, который является экземпляромcollections.Sequence
, например, будет поддерживать индексации.