检查列表元素是否大于先前的元素

时间:2015-06-15 09:55:31

标签: python

我在Python中有这样的列表:

mylist = [13, 8, 7, 5, 6, 3, 9]

我想检查列表中的每个元素,它是否大于或等于前面的元素。如果这是真的,我想添加1并检查它是否等于先前元素。如果发生这种情况,请添加数字直到不再适用。

我希望你能理解,我想要存档的内容。 mylist的输出将是

outputlist = [13, 8, 7, 5, 9, 3, 10]

所以来自6的{​​{1}}大于mylist所以它会添加5,现在它已经存在1。因此,它会添加另一个7(值= 1)和另一个8(值= 1)。

" 9"从初始列表中等于新计算的9,所以它加1。

注意:顺序很重要,因此排序9不是一种选择。

1 个答案:

答案 0 :(得分:1)

不是很漂亮,但我找不到更短的方法来做到这一点。似乎工作似乎。

def magic(lst):
    lst = lst[:] # create copy
    seen = set() # prior values as set
    for i in range(len(lst)):
        if any(lst[i] >= x for x in lst[:i]): # greter/equal than any prior
            lst[i] += 1      # first increment
            while lst[i] in seen:
                lst[i] += 1  # increment more
        seen.add(lst[i])     # add to prior set
    return lst

示例:

>>> magic([9, 9, 9, 9])
[9, 10, 11, 12]
>>> magic([13, 8, 7, 5, 6, 3, 9])
[13, 8, 7, 5, 9, 3, 10]