Python 在for循环后在三维列表中维护尺寸

Python 在for循环后在三维列表中维护尺寸,python,list,list-comprehension,Python,List,List Comprehension,我正在处理列表,我提出了一个问题。所以基本上,我有一个3D列表,在其中我尝试在一个for循环之后,我维护了内部列表的第二个也是倒数第二个元素,我的代码完成了工作,但是它从3D列表变成了2D列表,我不想这样(这只是一个示例,mylist可以有更多的元素),这是我的代码 mylist = [[[0, 4, 3, 5, 1], [0, 2, 1], [0, 2, 3, 1], [0, 3, 5, 1], [0, 2, 5, 3, 1]], [[0, 4, 1], [0, 2, 1

我正在处理列表,我提出了一个问题。所以基本上,我有一个3D列表,在其中我尝试在一个for循环之后,我维护了内部列表的第二个也是倒数第二个元素,我的代码完成了工作,但是它从3D列表变成了2D列表,我不想这样(这只是一个示例,mylist可以有更多的元素),这是我的代码

mylist = [[[0, 4, 3, 5, 1], [0, 2, 1], [0, 2, 3, 1], [0, 3, 5, 1], [0, 2, 5, 3, 1]], 
          [[0, 4, 1], [0, 2, 1], [0, 4, 3, 1], [0, 4, 5, 1], [0, 4, 3, 1]]]

aux = []
for i in mylist:
    for j in i :
        if len(j) >= 4: 
            aux.append(j[1:-1])

print(aux)

# aux= [[4, 3, 5], [2, 3], [3, 5], [2, 5, 3], [4, 3], [4, 5], [4, 3]]
我几乎得到了我需要的,但我期待着这个结果

aux = [[[4, 3, 5], [2, 3], [3, 5], [2, 5, 3]], [[4, 3], [4, 5], [4, 3]]] #Mantains the 3D dimension 
我正在研究我的列表理解,但我不太确定如何做到这一点,这就是我尝试的

aux = [[j[1:-1] if len(j) >= 4 for j in i] for i in mylist] 
#But I get a syntax error

我不知道是否有更简单的方法可以做到这一点(必须是,但我是一个让事情复杂化的人),也许是一个更简单的列表理解,我没有看到,所以任何帮助将不胜感激,谢谢

您做对了,只需将if语句移到后面即可理解列表中的内容:

aux = [[j[1:-1] for j in i if len(j)>=4] for i in mylist] 
输出:

[[[4, 3, 5], [2, 3], [3, 5], [2, 5, 3]], [[4, 3], [4, 5], [4, 3]]]

您答对了,只需将if语句移到后面即可理解列表:

aux = [[j[1:-1] for j in i if len(j)>=4] for i in mylist] 
输出:

[[[4, 3, 5], [2, 3], [3, 5], [2, 5, 3]], [[4, 3], [4, 5], [4, 3]]]
你真的很接近

这应该行得通。仔细看看,看看其中的逻辑

aux = [[j[1:-1] for j in i if len(j) >= 4] for i in mylist] 
你真的很接近

这应该行得通。仔细看看,看看其中的逻辑

aux = [[j[1:-1] for j in i if len(j) >= 4] for i in mylist] 

哦,我明白了!,我没有完全迷路,谢谢你!哦,我明白了!,我没有完全迷路,谢谢你!