Arrays 对于数组中的每个元素,如果该元素小于其上一个元素,则将其增加,直到上一个元素有一个

Arrays 对于数组中的每个元素,如果该元素小于其上一个元素,则将其增加,直到上一个元素有一个,arrays,python-3.x,sorting,Arrays,Python 3.x,Sorting,假设我有一个数组:list1=[8,5,3,1,1,10,15,9] 现在,如果该元素小于其前一个元素,则将其增加,直到前一个元素为1 在这里: 5

假设我有一个数组:list1=[8,5,3,1,1,10,15,9] 现在,如果该元素小于其前一个元素,则将其增加,直到前一个元素为1

在这里:

5<8所以5应该变成:5+3+1=9,即(8+1)

3<5所以3应该变成:3+2+1=6,即(5+1)

1<3所以1应该变成:1+2+1=4,即(3+1)

现在我可以得到元素之间的差异,如果它小于之前的元素。 但是,如何在最终列表中使用它来获得如下输出:

finallist=[8,9,6,4,1,10,15,16]

另外,如何在代码中获得“k”list的最终列表值?现在它显示:

[2] [2, 4] [2, 4, 3] [2, 4, 3, 3] [2,4,3,3,7]

源代码:

list1 = [8, 5, 3, 1, 1, 10, 15, 9]

k = []

def comput(x):
    if i[x] < i[x-1]:
        num = (i[x-1] - i[x]) + 1
        k.append(num)
        print(k)
    return


for i in [list1]:
    for j in range(len(list1)):
        comput(j)
list1=[8,5,3,1,1,10,15,9]
k=[]
def计算机(x):
如果i[x]
您可以使用列表理解。基本上,下面的代码将检查一个是否大于下一个。如果是,则会将其转换为上一个+1

list1 = [8, 5, 3, 1, 1, 10, 15, 9]

k = [list1[0]] + [i if j<=i else j+1 for i,j in zip(list1[1:],list1[:-1])]
cost = [j-i for i,j in zip(list1,k)]
print(k)
print(cost)

下面的代码将创建一个具有所需输出的新列表

l1 = [8, 5, 3, 1, 1, 10, 15, 9]
l = [l1[0]]
c=[0]         # cost / difference list

for i in range(len(l1)-1):
    if l1[i+1] < l1[i]:
        l.append(l1[i]+1)
        c.append(l1[i]+1-l1[i+1])
    else:
        l.append(l1[i+1])
        c.append(0)
print(l)

这是最后的名单。我还想要增加的成本。比如5增加了4。3增加了3。那么,如何获得增量值呢?我得到了[2,4,3,3,7],这是正确的。怎么到这里?或者更好:我们可以得到一份成本清单,比如:[0,4,3,3,0,0,0,7,2]?@TarakShah更新!使用了一个单独的列表
c
来区分差异。只是好奇!如果我想增加我的最终选手,我会怎么做?这里我们得到的最终列表是[8,9,6,4,1,10,15,16],所以应用相同的逻辑,我们可以将最终列表作为[8,9,10,11,12,13,15,16]吗?只需将
l1
更改为
[8,9,6,4,1,10,15,16]
。如果要在初始
l1
上执行两次此操作,请定义一个函数并运行两次。这是最终列表。我还想要增加的成本。比如5增加了4。3增加了3。那么,如何获得增量值呢?我得到了[2,4,3,3,7],这是正确的。怎么到这里?或者更好:我们可以得到一个成本清单,比如:[0,4,3,3,0,0,0,7]?伙计,我刚得到我:D@Tarak我更新了我的答案。如果我帮了你,如果你能标记为解决方案/投票,那会有很大帮助。只是好奇而已!如果我想增加我的最终选手,我会怎么做?这里我们得到的最终列表是[8,9,6,4,1,10,15,16],所以应用同样的逻辑,我们能把最终列表变成[8,9,10,11,12,13,15,16]吗??
l1 = [8, 5, 3, 1, 1, 10, 15, 9]
l = [l1[0]]
c=[0]         # cost / difference list

for i in range(len(l1)-1):
    if l1[i+1] < l1[i]:
        l.append(l1[i]+1)
        c.append(l1[i]+1-l1[i+1])
    else:
        l.append(l1[i+1])
        c.append(0)
print(l)
[8, 9, 6, 4, 1, 10, 15, 16]
[0, 4, 3, 3, 0,  0,  0,  7]