列表的轮换也已在前面讨论过, 但是这篇特定的文章集中于速记和各种短技巧, 以单行或一个单词实现。此操作对于程序员完成各种任务至关重要。
让我们讨论一下轮换列表的不同方法。
方法1:使用切片
这种特定的方法是通用方法, 通常用于完成此任务, 并且在许多文章中也进行了讨论。给定转数, 只需将后面的切片部分与初始切片的部分连接即可。
# Python3 code to demonstrate
# rotation of list
# using slice
# initializing list
test_list = [ 1 , 4 , 6 , 7 , 2 ]
# printing original list
print ( "Original list : " + str (test_list))
# using slicing to left rotate by 3
test_list = test_list[ 3 :] + test_list[: 3 ]
# Printing list after left rotate
print ( "List after left rotate by 3 : " + str (test_list))
# using slicing to right rotate by 3
# back to Original
test_list = test_list[ - 3 :] + test_list[: - 3 ]
# Printing after right rotate
print ( "List after right rotate by 3(back to original) : "
+ str (test_list))
输出如下:
Original list : [1, 4, 6, 7, 2]
List after left rotate by 3 : [7, 2, 1, 4, 6]
List after right rotate by 3 ( back to original) : [1, 4, 6, 7, 2]
方法2:使用列表理解
这个问题也可以通过幼稚的方法解决, 但是它的较短实现将借助于列表理解。在这种方法中, 我们只需要在旋转后将索引分配给每个值到特定位置。
# Python3 code to demonstrate
# rotation of list
# using list comprehension
# initializing list
test_list = [ 1 , 4 , 6 , 7 , 2 ]
# printing original list
print ( "Original list : " + str (test_list))
# using list comprehension to left rotate by 3
test_list = [test_list[(i + 3 ) % len (test_list)]
for i, x in enumerate (test_list)]
# Printing list after left rotate
print ( "List after left rotate by 3 : " + str (test_list))
# using list comprehension to right rotate by 3
# back to Original
test_list = [test_list[(i - 3 ) % len (test_list)]
for i, x in enumerate (test_list)]
# Printing after right rotate
print ( "List after right rotate by 3(back to original) : "
+ str (test_list))
输出如下:
Original list : [1, 4, 6, 7, 2]
List after left rotate by 3 : [7, 2, 1, 4, 6]
List after right rotate by 3(back to original) : [1, 4, 6, 7, 2]
方法3:使用collections.deque.rotate()
收集模块具有双端队列类, 该类提供rotate(), 这是允许旋转的内置函数。这是鲜为人知的功能, 但实用性更高。
# Python3 code to demonstrate
# rotation of list
# using rotate()
from collections import deque
# initializing list
test_list = [ 1 , 4 , 6 , 7 , 2 ]
# printing original list
print ( "Original list : " + str (test_list))
# using rotate() to left rotate by 3
test_list = deque(test_list)
test_list.rotate( - 3 )
test_list = list (test_list)
# Printing list after left rotate
print ( "List after left rotate by 3 : " + str (test_list))
# using rotate() to right rotate by 3
# back to Original
test_list = deque(test_list)
test_list.rotate( 3 )
test_list = list (test_list)
# Printing after right rotate
print ( "List after right rotate by 3(back to original) : "
+ str (test_list))
输出如下:
Original list : [1, 4, 6, 7, 2]
List after left rotate by 3 : [7, 2, 1, 4, 6]
List after right rotate by 3(back to original) : [1, 4, 6, 7, 2]
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。