以下是完全伪造的代码.但是,假设你需要做一些额外的副作用函数调用(用于调试日志)?你怎么把它放进去的?
[ i for i in range(10) ]
Run Code Online (Sandbox Code Playgroud)
或者总是必须重写为正常的循环?
list=[]
for i in range(10):
otherStuff()
list.append(i)
Run Code Online (Sandbox Code Playgroud)
在C中,有一个逗号运算符用于此类事情......
显然,不要在列表推导中使用副作用.即使您完全理解它,它也会让下一个必须维护它的人难以理解您的代码.列表推导是创建列表的简洁方式,而不是调用函数n时间的方法.
有关进一步阅读,请参阅问题是Pythonic将列表推导用于副作用吗?
换句话说,您应该使用显式for循环.