在Python中移动列表的最佳方法是什么?

时间:2017-06-12 14:13:40

标签: list shift

我有一个数字列表,让我们说:

my_list = [2, 4, 3, 8, 1, 1]

从这个列表中,我想获得一个新列表。这个列表将以最大值开始直到结束,我想要添加第一部分(从开头到最大值之前),如下所示:

my_new_list = [8, 1, 1, 2, 4, 3]

(基本上它对应于水平图移位......)

有一种简单的方法吗? :)

4 个答案:

答案 0 :(得分:1)

这样的事情怎么样:

max_idx = my_list.index(max(my_list))
my_new_list = my_list[max_idx:] + my_list[0:max_idx]

答案 1 :(得分:0)

根据需要申请,

在左边:

my_list.insert(0, my_list.pop())

在右边:

{{1}}

答案 2 :(得分:0)

或者,您可以执行以下操作

def shift(l,n):
    return itertools.islice(itertools.cycle(l),n,n+len(l))

my_list = [2, 4, 3, 8, 1, 1]
list(shift(my_list, 3))

答案 3 :(得分:0)

详细介绍Yasc的移动列表值顺序的解决方案,这是将列表从最大值开始移动的一种方法:

# Find the max value:

max_value = max(my_list)

# Move the last value from the end to the beginning, 
# until the max value is the first value:

while my_list[0] != max_value:
    my_list.insert(0, my_list.pop())