在语句中使用“如果X:Y”或“如果不是X:继续Y”会更好吗?

时间:2019-09-17 02:22:07

标签: python

我有两种选择来编写Python程序:

for i in (iterator):
    if (statement):
        operations

for i in (iterator):
    if not (statement):
        continue
    operations

我认为使用“ continue”需要花费更多的时间,但是当“ operations”实际上是一个很长的块时,我觉得缩进较短会使代码看起来更好。

它们的运行速度有很大不同吗?对大多数人来说,其中之一是否具有更好的可读性?还是我可以选择自己喜欢的一个?

2 个答案:

答案 0 :(得分:0)

我个人更喜欢缩进较少的第二种方法。

您还可以在其他地方对其他函数进行操作并编写:

results = [operation(i) for i in iterator if statement]

示例:

>>> [i+i for i in range(10) if i<5]
[0, 2, 4, 6, 8]

答案 1 :(得分:0)

我认为他们没有什么不同。您可以使用喜欢的那个。

在代码段下方附加以表明它们完全相同

In [1]: %%time 
   ...: count = 0 
   ...: for i in range(10000000): 
   ...:     if i%2==0: 
   ...:         count += 1 
   ...:                                                                                                                                                                                                           
CPU times: user 1.11 s, sys: 0 ns, total: 1.11 s
Wall time: 1.11 s

In [2]: %%time 
   ...: count = 0 
   ...: for i in range(10000000): 
   ...:     if not i%2==0: 
   ...:         continue 
   ...:     count += 1 
   ...:                                                                                                                                                                                                           
CPU times: user 1.15 s, sys: 0 ns, total: 1.15 s
Wall time: 1.15 s

通常,如果operations很长,我希望if not (conditions): continue避免缩进。