我如何在列表下反转列表?

2024-04-25 08:18:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想撤销一张单子,但它不是普通的单子。它有自己的列表项。例如:

[[0, 1, 2], [1, 2, 3]]

我已经做了一个程序,你可以看到它,但它没有给我正确的输出。你知道吗

def deep_reverse(L):
    if len(L) > 1:
        x=len(L)
        i=0
        for i in range(x):
            L[i].reverse()
    else:
        L.reverse()
    return L

在执行之后,它给出了这个结果:

[[2, 1, 0], [3, 2, 1]]

但是这个输出是错误的,正确的输出是:

[[3, 2, 1], [2, 1, 0]]

请我只是错过了很平常的事情,但由于我是一个噪音程序员,所以我没有足够的知识。非常感谢你的帮助。你知道吗

请用-VE数字检查您的代码


Tags: in程序列表forlenreturnifdef
3条回答

使用列表理解和索引:

old_list = [[0, 1, 2], [1, 2, 3]]
# reversed(old_list) = [[1,2,3],[0,1,2]]
new_list = [item[::-1] for item in reversed(old_list)]
new_list
# [[3, 2, 1], [2, 1, 0]]

使用列表理解:

l = [[0, 1, 2], [1, 2, 3]]

c = [x[::-1] for x in l[::-1]] # [[3, 2, 1], [2, 1, 0]]

我不知道你试过什么,但是:

l = [[1, 2], [3, -4], [-5, 6, 7]]
c = [x[::-1] for x in l[::-1]] # [[7, 6, -5], [-4, 3], [2, 1]]

在所有情况下,都应该反转包含列表的列表,而不仅仅是条件len(L) > 1False,只需对以下内容做一个简短的更改:

def deep_reverse(L):
    if len(L) > 1:
        x=len(L)
        i=0
        for i in range(x):
            L[i].reverse()
    L.reverse()

由于此函数更改列表和子列表,因此不需要return语句(L.reverse()返回None)。你知道吗

相关问题 更多 >