Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中哪个更好?_Python_Conditional Statements - Fatal编程技术网

python中哪个更好?

python中哪个更好?,python,conditional-statements,Python,Conditional Statements,我在python中使用了一些条件语句,它们给出了相同的结果。我想知道哪一个更好,它们在性能和逻辑上有什么不同 案例1: 如果a、b和c: #一些行动 vs 案例2: 如果a、b或c: #一些行动 vs 如果有((a、b、c)): #一些行动 案例3: 如果a中不是x: #一些行动 vs 如果x不在a中: #一些行动 在上述情况下,我想知道性能、逻辑和首选方式的差异。案例1 从 全部(可编辑) 如果iterable的所有元素都为True,则返回True(或 如果iterable为空)。

我在python中使用了一些条件语句,它们给出了相同的结果。我想知道哪一个更好,它们在性能和逻辑上有什么不同

案例1:
如果a、b和c:
#一些行动
vs

案例2:
如果a、b或c:
#一些行动
vs

如果有((a、b、c)):
#一些行动
案例3:
如果a中不是x:
#一些行动
vs

如果x不在a中:
#一些行动

在上述情况下,我想知道性能、逻辑和首选方式的差异。

案例1

全部(可编辑)

如果iterable的所有元素都为True,则返回True(或 如果iterable为空)。相当于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True
def any(iterable):
    for element in iterable:
        if element:
            return True
    return False
这意味着
如果a、b和c:
如果all((a、b、c)):
做同样的事情(duh),但是
all()
涉及一个函数调用和一个循环,所以它肯定会稍微慢一点,但实际上只是一点点

如果a和b以及c只有两个变量(不超过3个),我建议您使用
,以保持可读性;如果有更多变量,则使用
all()

请记住:可读性几乎总是比轻微的性能改进更重要

all()
any()
可以将列表理解作为输入,这非常有用

注意:
all()
仅在Python 2.5中可用+


案例2

和案例1一样,真的。因为它几乎是完全相同的函数

任何(可编辑)

如果iterable的任何元素为True,则返回True。如果 iterable为空,返回False。相当于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True
def any(iterable):
    for element in iterable:
        if element:
            return True
    return False
注意:
any()
仅在Python 2.5中可用+


案例3

使用非运算符而不是非运算符。。。是虽然两个表达式在功能上完全相同,但前者更具可读性且更可取


如果x不在a:
中,您应该使用
,而不是
如果x不在a:
中,因为样式指南是神圣的

区别是什么?速度、逻辑性、可读性等等?@Tichodromamuraria编辑了这个问题。我想补充一点,在前两种情况下,如果我们已经有一个iterable,我们应该使用
any
all
,因为如果我们有单独的元素,那么将它们转换为iterable会有额外的成本。@Ankurakan是的,我想我的意思是说它可以接受LC作为输入:-)这回答了我的问题。谢谢。@TimCastelijns我喜欢你的说法“因为样式指南是神圣的”。但我父亲告诉我一条规则,它简化了(相当复杂的)捷克语语法——试着选择你首先想到的所有选项,然后选择一个,这听起来最自然。这假设您是母语人士,所以唯一要做的事情就是努力成为母语为Python的人。@JanVlcinsky唯一要做的事情就是努力成为母语为Python的人同时,我只想遵循官方的风格指南:-)