Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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中二维列表的逆序_Python_List_Reverse - Fatal编程技术网

Python中二维列表的逆序

Python中二维列表的逆序,python,list,reverse,Python,List,Reverse,我想使用列表理解反转列表的特定维度。假设我有以下列表: test = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] 我想返回: test = [[[4, 3], [2, 1]], [[8, 7], [6, 5]]] 列表的第一组顺序相同,但两组内部列表的顺序相反。我成功地反转了第二层: >>> [x[::-1] for x in [y for y in test]] [[[3, 4], [1, 2]], [[7, 8], [5, 6]]] 但当

我想使用列表理解反转列表的特定维度。假设我有以下列表:

test = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
我想返回:

test = [[[4, 3], [2, 1]], [[8, 7], [6, 5]]]
列表的第一组顺序相同,但两组内部列表的顺序相反。我成功地反转了第二层:

>>> [x[::-1] for x in [y for y in test]]
[[[3, 4], [1, 2]], [[7, 8], [5, 6]]]
但当我尝试时:

>>> [z[::-1] for z in [x[::-1] for x in [y for y in test]]]
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
任何帮助都将不胜感激

>>> test = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
>>> [[y[::-1] for y in x[::-1]] for x in test]
[[[4, 3], [2, 1]], [[8, 7], [6, 5]]]
请注意,使用
reversed(x)
而不是
x[:-1]
会稍微有效一些,因为您不会创建不必要的临时列表,但是
x[:-1]
与您当前的尝试一致

作为旁注,我发现列表理解更具可读性,但为了完整起见,这里介绍了如何使用
map()

或者在Python3.x上(因为
map()
返回一个映射对象而不是列表):


您有两个独立的列表理解,外部的列表理解正在处理内部列表理解的输出。所以它只是把相同的元素重新颠倒过来。相反,您只需要有一个嵌套列表:

[y[::-1] for x in test for y in x[::-1]]
这正是我认为您最初的目标。

NumPy alternative:

>>> import numpy as np
>>> a = np.array(test)
>>> a[:,::-1,::-1].tolist()
[[[4, 3], [2, 1]], [[8, 7], [6, 5]]]

列表具有内置功能“反转”。这很方便

test = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]

for element in test:
    element.reverse()
    for entry in element:
        entry.reverse()
结果:

>>> test
[[[4, 3], [2, 1]], [[8, 7], [6, 5]]]

你能澄清一下吗,你真的想要
[[4,3],[2,1]],[6,5],[8,7]]
?我希望
[6,5]
[8,7]
可以互换,所以
[[4,3],[2,1],[[8,7],[6,5]]
是的,很抱歉输入错误!我会修改原稿的
test = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]

for element in test:
    element.reverse()
    for entry in element:
        entry.reverse()
>>> test
[[[4, 3], [2, 1]], [[8, 7], [6, 5]]]