繁体   English   中英

如果列表为空,Python 返回 False

[英]Python return False if list is empty

在一个编码示例中,我看到以下代码片段,如果列表为空则返回True,否则返回False

return a == []

这样做的原因是为了避免写作

if a:
    return False
else:
    return True

在具有数千个条目的真实示例中,我应该注意任何速度差异吗?

不会。两种情况下都没有速度差异。 因为在这两种情况下,首先检查列表的length 在第一种情况下,该lena与比较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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM