Python如何避免非常相似的行

时间:2017-02-08 07:26:22

标签: python

对于下面的代码示例,在较少的行中编写它们的最佳方法是什么?我发现更少线条的代码更容易理解

除了第一个例子,我只是将它们写在一行中,用;分隔。 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()

3 个答案:

答案 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