我正在编写一个程序,在这个程序中我必须测试列表中的元素是否属于某种类型。列表(z,如下所示)会变大,我可以用标准方法进行测试:
for l in z:
typeL = type(l)
if typeL == complex or typeL == float:
#evaluate suite
elif typeL == list:
#evaluate different suite
或者,我可以做以下事情:
^{pr2}$
我的问题是,哪种方法更快、更有效或更受欢迎?感谢大家的提前。在
Tags:
根据Zen of Python
所以如果你想比较类型,你应该得到类型并进行比较。 clear方法正在使用接受tuple of types参数的
isinstance method
。所以你的代码可能是这样的:此外,isinstance与ABC元类兼容,因此您可以更直接、更清晰地选择:
^{pr2}$UPD:在回答关于绩效的评论中的一个问题时,你应该记住,premature optimization is the root of all evil。当你的程序运行时,你可以分析它,找出性能下降的地方。接下来你可以用python优化它,用cython或C重写,可以使用另一个实现,等等,但是当你用python编写代码时,你必须尊重python代码更好的地方。在
我不确定您要做什么,但是既然您已经(几乎)准备好了这两个实现,您应该用您的数据对它们进行基准测试,以确定哪个实现在您的情况下更快。在
我会惊讶地看到性能上的巨大差异,只有当评估套件是一个非常便宜的操作。在
从可读性和可维护性来看,我更喜欢第一种。这个技巧对我来说不是很直观。在
相关问题 更多 >
编程相关推荐