如何检查一个列表的元素是否是一个列表(在Python中)?

如果我们有以下列表:

list = ['UMM', 'Uma', ['Ulaster','Ulter']] 

如果我需要找出列表中的某个元素本身是否是一个列表,我可以用下面的代码replaceaValidList中的什么?

 for e in list: if e == aValidList: return True 

有没有特别的用途? 有没有最好的方法来检查一个variables/元素是否是一个列表?

3 Solutions collect form web for “如何检查一个列表的元素是否是一个列表(在Python中)?”

使用isinstance

 if isinstance(e, list): 

如果要检查对象是列表还是元组,请将几个类传递给isinstance

 if isinstance(e, (list, tuple)): 
  1. 弄清楚你想要的项目具有什么特定的属性。 他们需要可以索引吗? 可切片? 他们需要一个.append()方法吗?

  2. collections模块中查找描述该特定types的抽象基类。

  3. 使用isinstance

     isinstance(x, collections.MutableSequence) 

你可能会问“为什么不使用type(x) == list ?” 你不应该这样做,因为那样你就不会支持看起来像列表的东西。 Python的一部分思路是鸭子打字 :

我看到一只像鸭子一样走路的鸟儿,像鸭子一样游泳,像鸭子一样呱呱叫,我把那只鸟叫做鸭子

换句话说,你不应该要求对象是list ,只是他们有你需要的方法。 collections模块提供了一堆抽象基类,它们有点像Java接口。 任何types都是collections.Sequence一个实例。例如,序列将支持索引。

你正在寻找的expression可能是:

 ... return any( isinstance(e, list) for e in my_list ) 

testing:

 >>> my_list = [1,2] >>> any( isinstance(e, list) for e in my_list ) False >>> my_list = [1,2, [3,4,5]] >>> any( isinstance(e, list) for e in my_list ) True >>> 
  • 列表和元组有什么区别?
  • 命名为可选的关键字参数
  • 是否有可能在Python中打破多行
  • 致命错误:Python.h:没有这样的文件或目录
  • 在Python中,两个对象何时相同?
  • 无法导入肯定安装的python模块(机械化)
  • 如何计算NumPy布尔数组中真实元素的数量
  • 在pandas groupby列表中将行分组
  • 为什么开始慢于切片
  • python中有效的date范围重叠计算?
  • 哪个是Python的最佳IDE For Windows