[英]Python return False if list is empty
在一个编码示例中,我看到以下代码片段,如果列表为空则返回True,否则返回False
return a == []
这样做的原因是为了避免写作
if a:
return False
else:
return True
在具有数千个条目的真实示例中,我应该注意任何速度差异吗?
不会。两种情况下都没有速度差异。 因为在这两种情况下,首先检查列表的length
。 在第一种情况下,该len
的a
与比较len
的[]
前的任何进一步的比较。 大多数时候len
应该不同,所以测试会立即返回。
但是更pythonic的方法是return not a
或使用bool
转换它然后返回它:
return not a
# or
return not bool(a)
如果你问哪个方法放在函数中会更快(因此是return
),那么我使用timeit
模块进行了一些测试。 我把每个方法放在一个函数中,然后运行程序看看哪个函数跑得更快。 这是程序:
import timeit
def is_empty2():
a = []
if a:
return True
else:
return False
def is_empty1():
a = []
return a == []
print("Time for method 2:")
print(timeit.timeit(is_empty2))
print("")
print("Time for method 1:")
print(timeit.timeit(is_empty1))
我运行了五次程序,每次都记录每个函数的速度。 在获得每次的平均值后,这是我想出的:
method one speed(milliseconds): 0.2571859563796641
----------------------------- ------------------
method two speed(milliseconds): 0.2679253742685615
至少从我上面的测试来看,您在问题中描述的第一种方法比第二种方法稍快。 当然,根据这两个函数内部的确切内容,上面的数字可能会发生巨大变化。
但是,我同意 Cdarke 在评论中所说的话。 选择最清晰简洁的那个。 不要仅仅根据其速度选择一个选项。 用 Guido van Rosom 的话来说:可读性很重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.