2024-04-27 23:02:08 发布
网友
如果我们有以下清单:
list = ['UMM', 'Uma', ['Ulaster','Ulter']]
如果需要确定列表中的元素本身是否是列表,那么在下面的代码中可以用什么替换avalidlest?
for e in list: if e == aValidList: return True
有特别的进口货要用吗?有没有一种检查变量/元素是否为列表的最佳方法?
您要查找的表达式可能是:
... return any( isinstance(e, list) for e in my_list )
测试:
>>> 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 >>>
使用^{}:
if isinstance(e, list):
如果要检查对象是列表还是元组,请将几个类传递给isinstance:
isinstance
if isinstance(e, (list, tuple)):
找出您希望项具有的list的特定属性。它们需要可转位吗?可切片?他们需要一个.append()方法吗?
list
.append()
查找描述^{}模块中特定类型的抽象基类。
isinstance(x, collections.MutableSequence)
你可能会问“为什么不直接使用type(x) == list?”你不应该那样做,因为那样你就不支持那些看起来像列表的东西了。Python思想的一部分是duck typing:
type(x) == list
I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck
换句话说,您不应该要求对象是lists,只要它们有您需要的方法。collections模块提供了一堆抽象基类,它们有点像Java接口。例如,作为collections.Sequence实例的任何类型都将支持索引。
collections
collections.Sequence
您要查找的表达式可能是:
测试:
使用^{} :
如果要检查对象是列表还是元组,请将几个类传递给
isinstance
:找出您希望项具有的
list
的特定属性。它们需要可转位吗?可切片?他们需要一个.append()
方法吗?查找描述^{} 模块中特定类型的抽象基类。
使用^{} :
你可能会问“为什么不直接使用
type(x) == list
?”你不应该那样做,因为那样你就不支持那些看起来像列表的东西了。Python思想的一部分是duck typing:换句话说,您不应该要求对象是
list
s,只要它们有您需要的方法。collections
模块提供了一堆抽象基类,它们有点像Java接口。例如,作为collections.Sequence
实例的任何类型都将支持索引。相关问题 更多 >
编程相关推荐