Перевернуть строку в списке и еще раз перевернуть список во вложенном списке - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть многомерный список, который в основном представляет собой список строк, вложенных в список.Я хочу, чтобы список был перевернут, а также элементы списка в списке были перевернуты, и далее строки в списке также должны быть перевернуты.

Пример: у меня есть список

[
    ['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 голосов
/ 21 декабря 2018

вы хотите этот однострочный:

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

примечания:

  • reversed(lst) быстрее, чем lst[::-1], потому что он не создает новый список, онпросто повторяет в обратном направлении (в этом случае это работает, потому что длина известна).
  • x[::-1] оставлено как есть, потому что это намного быстрее, чем "".join(reversed(x)), чтобы обратить строку как строку.
...