以更好,更短的方式重写双循环

nos*_*nos 9 python loops

我想知道以下代码是否可以以更好的方式编写.基本上,我想计算z = f(x, y)一个(x, y)meshgrid.

a = linspace(0, xr, 100)                                                                  
b = linspace(0, yr, 100)                                                                  

for i in xrange(100):
   for j in xrange(100):
      z[i][j] = f(a[i],b[j])
Run Code Online (Sandbox Code Playgroud)

Len*_*bro 24

是啊.您在问题中提供的代码很好.

不要以为少数几行"好"或"酷".重要的是清晰度,可读性和可维护性.其他人应该能够理解你的代码(你应该在12个月内理解它,当你需要找到一个bug).

许多程序员,特别是年轻人,需要"聪明"的解决方案.他们不是.这就是python社区的优点.我们比其他人更少受到这种错误的折磨.


aar*_*ing 7

你可以做点什么

z = [[f(item_a, item_b) for item_b in b] for item_a in a]
Run Code Online (Sandbox Code Playgroud)