Python中的“类型比较”

2024-04-25 18:22:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个程序,在这个程序中我必须测试列表中的元素是否属于某种类型。列表(z,如下所示)会变大,我可以用标准方法进行测试:

for l in z:
  typeL = type(l)
  if typeL == complex or typeL == float:
    #evaluate suite
  elif typeL == list:
    #evaluate different suite

或者,我可以做以下事情:

^{pr2}$

我的问题是,哪种方法更快、更有效或更受欢迎?感谢大家的提前。在


Tags: or方法in程序元素类型列表for
2条回答

根据Zen of Python

  • 显性胜于隐性。在
  • 简单总比复杂好

所以如果你想比较类型,你应该得到类型并进行比较。 clear方法正在使用接受tuple of types参数的isinstance method。所以你的代码可能是这样的:

for l in z:
  if isinstance(l,(complex,float)):
    #evaluate suite
  elif isinstance(l,list):
    #evaluate different suite

此外,isinstance与ABC元类兼容,因此您可以更直接、更清晰地选择:

^{pr2}$

UPD:在回答关于绩效的评论中的一个问题时,你应该记住,premature optimization is the root of all evil。当你的程序运行时,你可以分析它,找出性能下降的地方。接下来你可以用python优化它,用cython或C重写,可以使用另一个实现,等等,但是当你用python编写代码时,你必须尊重python代码更好的地方。在

我不确定您要做什么,但是既然您已经(几乎)准备好了这两个实现,您应该用您的数据对它们进行基准测试,以确定哪个实现在您的情况下更快。在

我会惊讶地看到性能上的巨大差异,只有当评估套件是一个非常便宜的操作。在

从可读性和可维护性来看,我更喜欢第一种。这个技巧对我来说不是很直观。在

相关问题 更多 >