我想要反转列表,但它不是普通的列表。它有自己的列表项。例如:
[[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 NUMBERS检查您的代码
答案 0 :(得分:3)
使用列表理解:
$ docker run -it -v VOLUME_PATH:/var/lib/mysql OTHER_OPTIONS_HERE image_name /bin/sh
我不确定你的尝试但是:
l = [[0, 1, 2], [1, 2, 3]]
c = [x[::-1] for x in l[::-1]] # [[3, 2, 1], [2, 1, 0]]
答案 1 :(得分:1)
使用列表理解和索引:
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]]
答案 2 :(得分:0)
您应该在所有情况下撤消包含列表的列表,而不仅仅是条件len(L) > 1
是False
,只需对以下内容进行简短更改:
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
)。
答案 3 :(得分:0)
使用列表理解的更优雅的解决方案,其中l
是您的初始列表:
In [5]: list(reversed([list(reversed(x)) for x in l]))
Out[5]: [[3, 2, 1], [2, 1, 0]]