这是一个我无法理解的一般性问题.
如果我有这个:
somelist = [[a for a, b in zip(X, y) if b == c] for c in np.unique(y)]
如何将其写为正常的多行循环?我似乎从来没有做对.
编辑:到目前为止,我已经尝试过:
somelist = []
for c in np.unique(y):
for x, t in zip(X, y):
if t == c:
separated.append(x)
但我不确定这是否正确,因为我没有在我的代码的其他部分得到预期的结果.
最佳答案 要展开嵌套的理解,请按照下列步骤操作:
>首先创建一个空容器:somelist = []
>如果理解有一个if子句,请在for之后加上
>然后,从最里面开始,将嵌套的理解展平
内心理解是:
row = []
for a, b in zip(X, y):
if b == c:
row.append(a)
然后,somelist只不过是[np.unique(y)]中的c行,其中row取决于几个因素.
这相当于:
somelist = []
for c in np.unique(y):
somelist.append(row)
所以完整的版本是:
somelist = []
for c in np.unique(y):
row = []
for a, b in zip(X, y):
if b == c:
row.append(a)
c.append(row)