对于下面的代码示例,在较少的行中编写它们的最佳方法是什么?我发现更少线条的代码更容易理解
除了第一个例子,我只是将它们写在一行中,用;
分隔。 PyCharm不喜欢它很难。它说,将多个语句写入一行就违反了一项规定。
代码示例1:
# x and y are 1D numpy arrays
order = x.argsort()
x = x[order]
y = y[order]
代码示例2:
allfbest = np.array(allfbest)
allfes = np.array(allfes)
alltrial = np.array(alltrial)
代码示例3:
means = dict()
mins = dict()
maxs = dict()
stds = dict()
medians = dict()
代码示例4:
means[fes] = bests.mean()
stds[fes] = bests.std()
mins[fes] = bests.min()
maxs[fes] = bests.max()
答案 0 :(得分:2)
您可以使用元组,但代码可读性可能会变差。
x, y = x[order], y[order]
allfbest, allfes, alltrial = np.array(allfbest), np.array(allfes), np.array(alltrial)
我更喜欢将具有不同含义的行分开。所以我只会在初始化时执行“tuple-wrap”,而不是像代码示例4那样。
答案 1 :(得分:1)
所有示例都不应该塞进更少的行中,不包括示例3,可以这样解决:
means, mins, maxs, stds, medians = (dict() for _ in range(5))
或
means, mins, maxs, stds, medians = ({} for _ in range(5))
右边括号中的东西是生成器表达式,并创建五个空字典,然后将其解压缩到左边的五个变量。
答案 2 :(得分:1)
示例2的一个内置快捷方式肯定是map
lst = [allfbest, allfes, alltrial]
allfbest, allfes, alltrial = map(np.array, lst) # applies np.array to each element in lst