想想我正在调用它的副作用的函数,而不是返回值(比如打印到屏幕,更新GUI,打印到文件等).
def fun_with_side_effects(x):
...side effects...
return y
Run Code Online (Sandbox Code Playgroud)
现在,是Pythonic使用列表推导来调用这个函数:
[fun_with_side_effects(x) for x in y if (...conditions...)]
Run Code Online (Sandbox Code Playgroud)
请注意,我不会将列表保存在任何位置
或者我应该像这样调用这个函数:
for x in y:
if (...conditions...):
fun_with_side_effects(x)
Run Code Online (Sandbox Code Playgroud)
哪个更好?为什么?
前几天我做了一些Python基准测试,我发现了一些有趣的东西.下面是两个或多或少相同的循环.循环1大约需要循环2执行的两倍.
循环1:
int i = 0
while i < 100000000:
i += 1
Run Code Online (Sandbox Code Playgroud)
循环2:
for n in range(0,100000000):
pass
Run Code Online (Sandbox Code Playgroud)
为什么第一个循环这么慢?我知道这是一个微不足道的例子,但它引起了我的兴趣.range()函数有什么特别之处,它比以相同方式递增变量更有效吗?
当我在Python中使用while循环或for循环时,我发现了问题.看起来人们更喜欢使用for循环(更少的代码行?).是否有任何具体情况我应该使用其中一种?这是个人偏好的问题吗?到目前为止我读过的代码让我觉得它们之间存在很大差异.