此解决方案的程序错误

时间:2016-08-06 16:52:44

标签: python

这是现在可用的

l = [list[0]]
list.pop(0)
x = len(list)

for i in range(x+1):
n = len(l)
j = 0

if list[j] > l[n-1]:
    l.append(list[j])
    list.pop(j)
    j = j+1

elif i == len(list):
    l.append(list[j])
    list.pop(j)
print(list)
print(l)

`

一些指针真的很有帮助!

1 个答案:

答案 0 :(得分:1)

制作列表的copy。迭代 successions中的副本并检查在result循环的当前迭代中将单调增加的条目添加到while。删除添加到result的条目。

在while循环的下一次迭代中重复 check-append-delete 循环;直到列表副本为空:

lst = [1, 2, 2, 2, 11, 5, 9, 8, 19]

lst_cp = lst.copy()
result = []

while lst_cp: # keep iterating until list is empty
    result.append(lst_cp.pop(0))
    for v in lst_cp[:]:
        if v > result[-1]:
            result.append(v)
            lst_cp.remove(v)

print(result)
# [1, 2, 11, 19, 2, 5, 9, 2, 8]