假设我有一个数组:list1 = [8,5,3,1,1,10,15,9] 现在,如果元素小于其前一个元素,则将其增加到前一个元素。
这里:
5< 8应该变为:5 + 3 + 1 = 9,即(8 + 1)
3< 5应该变成3:2 + 1 = 6,即(5 + 1)
1<因此,1应该变为:1 + 2 + 1 = 4,即(3 + 1)
现在我能够在元素之间得到差异,如果它小于前一个元素。 但是,如何在最终列表中使用它来获得这样的输出:
finallist = [8,9,6,4,1,10,15,16]
另外,如何获得' k'的最终列表值?在我的代码中列出?现在它显示:
[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)
答案 0 :(得分:1)
您可以使用列表推导。基本上,以下代码将检查一个是否大于下一个。如果是,则将其转换为前一个+ 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)
输出:
[8, 9, 6, 4, 1, 10, 15, 16]
[0, 4, 3, 3, 0, 0, 0, 7]
答案 1 :(得分:0)
以下代码将创建一个包含所需输出的新列表
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]