当第一个元素大于下一个元素时,减去列表中的连续元素-Python

whackamadoodle3000

我正在制作一个程序,它可以完成以下任务:

输入列表时a,如果结果为非负数,它将减去连续的元素(从头开始)。例如,如果

a=[3,2,1]

那么连续的数字将被减去,因此a=[1,1],然后a=[0]同样,结果中所有数字都必须升序(例如a2,1不能出现在列表中)。另一个例子:

a=[1, 10, 7, 3, 2]
[1, 3, 3, 2] #10-7 (10 and 7 get replaced with 3)
[1, 0, 2]    #3-3  (precedence goes to the left: 3-3 gets subtracted, not 3-2)
[1, 2]       #1-0

这是我当前的代码(其中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

这是我的看法:

a = [1, 10, 7, 3, 2]
b = [3, 2, 1]


def index_helper(l):
    for i, x in enumerate(l[:-1]):
        if l[i] >= l[i+1]:
            return i


def reduce(l):
    i = index_helper(l)
    while i is not None:
        l[i:i + 2] = [l[i] - l[i + 1]]
        i = index_helper(l)
    return l


>>> reduce(a)
[1, 2]

>>> reduce(b)
[0]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

一个python程序,用于保留列表中的第一个元素,并删除下一个元素

迭代Python列表中的连续元素,以使最后一个元素与第一个元素结合

获取Python中列表的下一个元素

Python:嵌套列表中的第一个元素

当python中列表中的元素为“-”时,如何将当前元素与下一个元素组合?

如果下一个元素与Python中的列表相同,则删除该元素

Python从矩阵的每一行中减去第一个元素

查找下一个元素是否小于前一个元素,并将其从列表python中删除

如何将列表的第一个元素的值连接到下一个位置?- Python

遍历Python列表,但第一个元素在末尾?

更改每组 Python 列表的第一个元素

删除列表元素,直到到达Python中的第一个空元素

匹配python中两个列表列表之间的第一个元素

Python检查列表中是否存在下一个元素

Python:在循环列表中查找上一个和下一个“True”元素

如何在python中获取列表的上一个和下一个元素

Python-如何替换列表列表中每个列表的第一个元素

如何在Python中匹配两个不同列表的第一个元素

乘以Python中的上一个和下一个元素

如何从python列表中的每个列表中拉出第一个元素?

Python stdout和for循环不会打印列表中的第一个元素(第二个元素替换了第一个)

在Python的列表列表中查找第一个元素的总和

在 Python 中定义列表列表的第一个元素

通过比较第一个元素 Python 连接列表中的列表

获取 Python 列表列表中第一个元素的索引

成对浏览一个列表,除了第一个元素,Python

Python-根据内部列表的第一个元素对列表列表中的元素求和

从python3中的列表中检索第一个元素的最pythonic方法

获取子列表的第一个元素作为python中的字典键