Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将嵌套列表转换为常规for循环_Python_List Comprehension - Fatal编程技术网

Python 将嵌套列表转换为常规for循环

Python 将嵌套列表转换为常规for循环,python,list-comprehension,Python,List Comprehension,我想知道如何使用常规循环编写此列表: sep_class = [[x for x, t in zip(X_train, y_train) if t==c] for c in np.unique(y_train)] 我这样试过: sep_class = [] for c in np.unique(y_train): for x, t in zip(X_train, y_train): if t == c: sep_class.append(x)

我想知道如何使用常规循环编写此列表:

sep_class = [[x for x, t in zip(X_train, y_train) if t==c] for c in np.unique(y_train)]
我这样试过:

sep_class = []
for c in np.unique(y_train):
    for x, t in zip(X_train, y_train):
        if t == c:
            sep_class.append(x)
但结果是不同的。我做错了什么

sep_class = []
for c in np.unique(y_train):
    sep_class.append([])
    for x, t in zip(X_train, y_train):
        if t ==c:
            sep_class[c].append(x)

现在它们是相同的。

将列表理解转换为常规循环的最常用方法如下:

l=[f(x)表示iter中的x]
#转换为:
l=[]
对于iter中的x:
l、 附加(f(x))
当您在理解中创建嵌套列表时,这会变得有点复杂,但遵循相同的逻辑,现在
f(x)
是列表comp本身的翻译。因此,我们:

l=[[g(x)代表sub中的x]代表iter中的sub]
#转换为:
l=[]
对于iter中的sub:
温度=[]
对于sub中的x:
附加温度(g(x))
l、 附加(临时)
因此,在您的情况下,只需添加条件,列表comp就变成:

sep\u class=[[x代表x,t在zip中(x\u列,y\u列),如果t==c]代表np中的c.unique(y\u列)]
#转换为:
sep_class=[]
对于np中的c。唯一(y_列):
sub=[]
对于拉链中的x,t(x_列车,y_列车):
如果t==c:
附件(x)
sep_类附加(子)

是的,它们应该是,除了sep没有定义这一事实。请阅读此列表。我们正在创建一个包含子列表的列表,而另一个代码似乎将所有内容都附加到同一个列表中。@Tomerikoo我试图问如何分解列表的ComperExtension,但我不介意,我看到了Karl Knechtel的链接并找到了它。这可能会有所帮助:但假设
c
的行为类似于范围(…)中的c的
。。。如果在第一次迭代中
c
2
,会怎么样?@Tomerikoo从来没有想到过这一点……但你是对的,因为我唯一的(y_序列)是(0,1,2,3,4,5,6,7,8,9),所以这在我的情况下有效。不管怎么说,这是一个糟糕的问题,我发现了。谢谢。事实上这根本不是一个坏问题!我在网站上找不到任何类似的东西,就在今天遇到了一个类似的问题。因此,这实际上是一个可以帮助他人的好问题-你可能只是问错了。。。查看我对您的问题的编辑,并查看我的答案和更多解释