我正在制作一个程序来完成以下任务:
当输入一个列表a
时,如果结果是非负数,它将减去连续的元素(从开头开始)。
例如,如果
a=[3,2,1]
然后将减去连续数,因此a=[1,1]
,然后a=[0]
。另外,在结果中,所有数字都必须升序(例如,列表中不能有2,1
)。另一个例子:
以下是我当前的代码(其中a是随机生成的):
import random
a=[random.randint(1,10) for e in range(20)]
print(a)
loop=1
while True:
try:
#print(loop,a)
subloop=0
while subloop<loop:
if a[loop-subloop]<=a[loop-1-subloop]:
a[loop-1-subloop]=a[loop-1-subloop]-a.pop(loop-subloop)
if loop!=1:
loop-=1
subloop+=1
if a[loop]<=a[loop-1]:
a[loop-1]=a[loop-1]-a.pop(loop)
else:
loop+=1
except IndexError:
break
print(a)
这段代码感觉有点长/不合适。有没有更好或更短/更有效的方法?在
另一种解决方案:
但是,这比@bphi的解决方案稍慢:
^{pr2}$以下是我的看法:
相关问题 更多 >
编程相关推荐