以下
ks = (5, 7, 9, 11, 13, 15)
lo = list([(s**2-1) for s in ks[0:-1]])
lo.append(int((ks[-1]**2-1)*1.5))
inc = list([v/6 for v in lo[0:3]])
inc.extend([v/4 for v in lo[3:5]])
inc.append(lo[-1]/6)
mi = list([a + b for a, b in zip(lo, inc)])
hi = list([a + b for a, b in zip(mi, inc)])
CENTER_CELL = {'High': hi, 'Low': lo, 'Mid': mi}
结果
{'High': [32, 64, 106, 180, 252, 448],
'Low': [24, 48, 80, 120, 168, 336],
'Mid': [28, 56, 93, 150, 210, 392]}
是否有任何方式压缩上述说明(除了打字,一个接一个,18个数字)?
答案 0 :(得分:1)
您可以使用numpy
,这使这些矢量操作更容易:
import numpy as np
ks = np.array([5, 7, 9, 11, 13, 15])
lo = np.int64((ks**2 - 1)*np.array([1]*5 + [1.5]))
inc = np.int64(lo*np.array([1/6.]*3 + [1/4.]*2 + [1/6.]))
CENTER_CELL = {'High': lo + 2*inc, 'Low': lo, 'Mid': lo + inc}
但老实说,我不太明白为什么要压缩你的代码。我同意jonrsharpe,你的确可以做得更久。