加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何将这一行for循环更改为正常for循环?

发布时间:2020-12-20 12:02:50 所属栏目:Python 来源:网络整理
导读:这是一个我无法理解的一般性问题. 如果我有这个: 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
这是一个我无法理解的一般性问题.

如果我有这个:

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,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,y):
        if b == c:
        row.append(a)
    c.append(row)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读