如何将列表(而非2D)顺时针旋转90度



作为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']

我需要以所需的格式列出上面的清单。

-我该怎么做?

-有更简单的方法吗?

您只需zip字符串列表,它就会逐个字符地生成元组,然后您只需要按相反的顺序连接元组。这里只有一行:

rotated_alphabet = [''.join(list(i)[::-1]) for i in zip(*alphabet)]

@MuhammadAhmad答案的一个变体将使用reverse,因为reverse与可迭代项一起工作,不需要转换为列表。

alphabet = ["ABCDEFG",
"HIJKLMN",
"OPQRSTU"]
rotated = [''.join(reversed(a)) for a in zip(*alphabet)]
print(rotated)

输出

['OHA', 'PIB', 'QJC', 'RKD', 'SLE', 'TMF', 'UNG']

最新更新