我有一个数字列表,让我们说:
my_list = [2, 4, 3, 8, 1, 1]
从这个列表中,我想获得一个新列表。这个列表将以最大值开始直到结束,我想要添加第一部分(从开头到最大值之前),如下所示:
my_new_list = [8, 1, 1, 2, 4, 3]
(基本上它对应于水平图移位......)
有一种简单的方法吗? :)
答案 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())