2024-06-06 17:49:14 发布
网友
我有一个列表,可以包含几个不同类型的元素。 我需要检查这个列表中是否有一个或多个特定类型的元素,并获取其索引。你知道吗
l = [1, 2, 3, myobj, 4, 5]
我可以通过简单地遍历我的列表并检查每个元素的类型来实现这个目标:
for i, v in enumerate(l): if type(v) == Mytype: return i
有没有一种更像Python的方法来达到同样的效果?你知道吗
可以使用^{}和generator expression:
return next(i for i, v in enumerate(l) if isinstance(v, Mytype)):
此解决方案的优点是,它与当前的解决方案类似:它只检查所需数量的项。你知道吗
另外,我使用了isinstance(v, Mytype)而不是type(v) == Mytype,因为它是Python中首选的类型检查方法。见PEP 0008。你知道吗
isinstance(v, Mytype)
type(v) == Mytype
最后,应该注意,如果找不到所需的项,此解决方案将引发StopIteration异常。您可以使用try/except来捕获此消息,也可以指定要返回的默认值:
StopIteration
return next((i for i, v in enumerate(l) if isinstance(v, Mytype)), None):
在这种情况下,如果找不到任何内容,将返回None。你知道吗
None
你可以使用列表理解。你知道吗
获取字符串类型的所有元素:
b = [x for x in a if isinstance(x,str)]
获取string类型元素的所有索引:
b = [x[0] for x in enumerate(a) if isinstance(x[1],str)]
可以使用^{} 和generator expression:
此解决方案的优点是,它与当前的解决方案类似:它只检查所需数量的项。你知道吗
另外,我使用了
isinstance(v, Mytype)
而不是type(v) == Mytype
,因为它是Python中首选的类型检查方法。见PEP 0008。你知道吗最后,应该注意,如果找不到所需的项,此解决方案将引发
StopIteration
异常。您可以使用try/except来捕获此消息,也可以指定要返回的默认值:在这种情况下,如果找不到任何内容,将返回
None
。你知道吗你可以使用列表理解。你知道吗
获取字符串类型的所有元素:
获取string类型元素的所有索引:
相关问题 更多 >
编程相关推荐