gpt4 book ai didi

python - 反转列表中的升序

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:37 24 4
gpt4 key购买 nike

试图找出如何反转列表中的多个升序序列。

例如:input = [1,2,2,3]output = [2,1,3,2]

我使用了 mylist.reverse() 但当然它反转为 [3,2,2,1]。不确定采用哪种方法?

详细示例:

假设 [5, 7, 10, 2, 7, 8, 1, 3] 是输入 - 输出应该是 [10,7,5,8, 7,2,3,1]。在此示例中,前 3 个元素 5、7、10 按升序排列,2、7、8 同样按升序排列,1、3 也按升序排列。该函数应该能够识别这种模式并反转每个序列并返回一个新列表。

最佳答案

你只需要找到所有非递减子序列并反转它们:

In [47]: l = [5, 7, 10, 2, 7, 8, 1, 3]    

In [48]: res = []

In [49]: start_idx = 0

In [50]: for idx in range(max(len(l) - 1, 0)):
...: if l[idx] >= l[idx - 1]:
...: continue
...: step = l[start_idx:idx]
...: step.reverse()
...: res.extend(step)
...: start_idx = idx
...:

In [51]: step = l[start_idx:]

In [52]: step.reverse()

In [53]: res.extend(step)

In [54]: print(res)
[10, 7, 5, 8, 7, 2, 3, 1]

为了增加子序列,您需要将 if l[idx] >= l[idx - 1] 更改为 if l[idx] > l[idx - 1]

关于python - 反转列表中的升序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54995420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com