Как повернуть список (не 2D) на 90 градусов по часовой стрелке? - PullRequest
0 голосов
/ 28 октября 2018

Как новичок в Python, я думаю, что самая большая проблема, которую я имею, - это чрезмерное усложнение проблемы, когда это можно сделать намного проще.Я не нашел решения для списка, который не является двумерным, поэтому я решил спросить.

Вот пример того, что я пытаюсь сделать:

# Before
alphabet = ["ABCDEFG",
            "HIJKLMN",
            "OPQRSTU"]
# After
rotated_alphabet = ["OHA",
                    "PIB",
                    "QJC",
                    "RKD",
                    "SLE",
                    "TMF",
                    "UNG"]     

Что я сделал до сих пор:

length_of_column = len(alphabet)
length_of_row = len(alphabet[0])
temp_list = []

x = -1
for i in range(length_of_column):
    while x < length_of_row-1:
        x += 1
        for row in alphabet:
            temp_list.append(row[x])

temp_list = temp_list[::-1]

Вывод

print(temp_list)
>>> ['U', 'N', 'G', 'T', 'M', 'F', 'S','L','E','R','K','D','Q','J','C','P','I','B', 'O', 'H', 'A']

Мне нужно составить список выше в нужном формате.

-Как мне это сделать?

-Есть более простой способ сделать это?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Вариант ответа @MuhammadAhmad будет использовать перевернутый , так как перевернутые работы с итерациями, нет необходимости преобразовывать в список.

alphabet = ["ABCDEFG",
            "HIJKLMN",
            "OPQRSTU"]

rotated = [''.join(reversed(a)) for a in zip(*alphabet)]
print(rotated)

Вывод

['OHA', 'PIB', 'QJC', 'RKD', 'SLE', 'TMF', 'UNG']
0 голосов
/ 28 октября 2018

Вы можете просто zip список строк, и он будет делать кортежи посимвольно, тогда вам нужно будет только объединить кортежи в обратном порядке.Вот в одной строке:

rotated_alphabet = [''.join(list(i)[::-1]) for i in zip(*alphabet)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...