python中哪个更好?
我在python中使用了一些条件语句,它们给出了相同的结果。我想知道哪一个更好,它们在性能和逻辑上有什么不同 案例1: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为空)。
如果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的人同时,我只想遵循官方的风格指南:-)