Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列表中删除非递增的连续元素,直到列表中的每个连续元素递增为止_Python_Loops - Fatal编程技术网

Python 从列表中删除非递增的连续元素,直到列表中的每个连续元素递增为止

Python 从列表中删除非递增的连续元素,直到列表中的每个连续元素递增为止,python,loops,Python,Loops,换句话说,我有一个列表元素(例如mass),它应该随着时间的推移而增加。下面是一个示例列表:从最后一个元素179.2开始,后面的每个元素都应该增加。我们看到他们的实例不符合此标准(在278.8之后) 虽然这是一个例子,但我有实际的数据,这些数据的长度也不同。因此,理想情况下,我试图通过迭代每个列表来解析这些列表,直到每个元素都比它的前一个元素增加 我可以按递增顺序重新排列列表,直到实际列表看起来与重新排列的列表匹配: import numpy as np check = masst == so

换句话说,我有一个列表元素(例如mass),它应该随着时间的推移而增加。下面是一个示例列表:从最后一个元素
179.2
开始,后面的每个元素都应该增加。我们看到他们的实例不符合此标准(在
278.8
之后)

虽然这是一个例子,但我有实际的数据,这些数据的长度也不同。因此,理想情况下,我试图通过迭代每个列表来解析这些列表,直到每个元素都比它的前一个元素增加

我可以按递增顺序重新排列列表,直到实际列表看起来与重新排列的列表匹配:

import numpy as np

check = masst == sorted(masst, reverse=True)
while(check==False):
    bool_ = [] # list of true and false statements
    for i in range(0, len(masst)-1):
        inc = masst[i] >= masst[i+1]
        bool_.append(inc)
    masst = list(np.array(masst)[bool_])

这样做,我似乎陷入了一个巨大的循环!我对我的方法有点困惑。

有一个问题:
while(check==False):
总是满意的,因为变量
check
没有更新。Check只包含值
True
False
,不进行更新,无论
masst
看起来如何,它都不会改变。(再次查看代码,我不知道当您只需要一个循环时,为什么要同时使用
for
while
循环。我认为您需要首先组织您的想法:)

如果要从列表中移动非递减元素,请尝试以下操作:

i = 1
while i < len(masst):
    if masst[i] > masst[i-1]:
        del masst[i-1]
        i = i-1 or 1
    else:
        i += 1
i=1
而我masst[i-1]:
德尔马斯特[i-1]
i=i-1或1
其他:
i+=1
这将从索引1开始,并在每次迭代中检查当前编号之前的编号。如果它较低,它将删除它,然后当前数字的索引将减少1,因此我们向后移动(但决不在索引1之前)。否则,我们将继续前进。这将删除列表中小于其后面的元素的所有元素

i = 1
while i < len(masst):
    if masst[i] > masst[i-1]:
        del masst[i-1]
        i = i-1 or 1
    else:
        i += 1