反转列表中的字符串,然后进一步反转嵌套列表中的列表

时间:2018-12-21 09:41:19

标签: python python-3.x list-comprehension

我有一个多维列表,它基本上是嵌套在列表中的字符串列表。我希望一个列表被反转,并且列表中的列表项也要反转,并且列表中的字符串也应该被反转。

例如:我有一个列表

[
    ['123', '456', '789'], 
    ['234', '567', '890'], 
    ['345', '678', '901']
]

我希望结果是

[
    ['109', '876', '543'],
    ['098', '765', '432'],
    ['987', '654', '321']
]

我已经尝试过该代码,它正在工作。但是我们可以使用列表理解来进一步简化。

下面是我尝试过的代码。

old = [['123', '456', '789'], ['234', '567', '890'], ['345', '678', '901']]
new = [];
for x in old[::-1]:
    z = [];
    for y in x:
        z.insert(0, y[::-1])
    new.append(z)
print(new)

输入

[['123', '456', '789'], ['234', '567', '890'], ['345', '678', '901']]

输出

[['109', '876', '543'], ['098', '765', '432'], ['987', '654', '321']]

1 个答案:

答案 0 :(得分:5)

您想要这种单线:

result = [[x[::-1] for x in reversed(y)] for y in reversed(lst)]

注释:

  • reversed(lst)lst[::-1]快,因为它不会创建新列表,而只是向后迭代(在这种情况下,因为长度已知,所以可以工作)。
  • x[::-1]保持原样,因为将字符串反转为字符串比"".join(reversed(x))快得多。