Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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/1/list/4.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_List_Loops - Fatal编程技术网

Python 按顺序排列列表,但删除后面出现的较低值

Python 按顺序排列列表,但删除后面出现的较低值,python,list,loops,Python,List,Loops,我有一个如下列表: [5000, 4000, 3500, 4200, 3300] [5000, 4000, 3500, 3300] prev = 2**31 nlist = [] for i in your_list: if i < prev: nlist.append(i) prev = i 我想把这个列表从高到低排序,但同时也要删除所有已经被列表前面出现的较低值“击败”的值。所以上面的列表应该是这样的: [5000, 4000, 3500,

我有一个如下列表:

[5000, 4000, 3500, 4200, 3300]
[5000, 4000, 3500, 3300]
prev = 2**31
nlist = []
for i in your_list:
    if i < prev:
        nlist.append(i)
        prev = i
我想把这个列表从高到低排序,但同时也要删除所有已经被列表前面出现的较低值“击败”的值。所以上面的列表应该是这样的:

[5000, 4000, 3500, 4200, 3300]
[5000, 4000, 3500, 3300]
prev = 2**31
nlist = []
for i in your_list:
    if i < prev:
        nlist.append(i)
        prev = i
我尝试过在列表上循环并将其与其他值进行比较,但我在for循环中迷失了方向。我想我遗漏了一些非常明显的东西


非常感谢任何帮助或其他文章

使用如下代码段:

[5000, 4000, 3500, 4200, 3300]
[5000, 4000, 3500, 3300]
prev = 2**31
nlist = []
for i in your_list:
    if i < prev:
        nlist.append(i)
        prev = i

您可以使用列表:

d = [5000, 4000, 3500, 4200, 3300]
new_d = [a for i, a in enumerate(d) if not i or d[i-1] > a]
输出:

[5000, 4000, 3500, 3300]

“节拍”由列表前面出现的较低值进行
表示您可以 记录当前最小值,并与之进行比较。如果大于最小值,则将其删除;如果小于最小值,则追加到结果并更新最小值

时间复杂度:O(n)
空间复杂度:O(1)

def微调列表从高到低(nums):
最小值=浮点值('inf')
结果=[]
对于num中的num:

如果num这里有一种方法,只将每个数字与
new\u d
的最后一个值进行比较:

d = [5000, 4000, 3500, 4200, 3300]
new_d = d[:1]
for item in d[1:]:
    if item < new_d[-1]:
        new_d.append(item)
print(new_d)

>>> [5000, 4000, 3500, 3300]
d=[500040003504203300]
新的d=d[:1]
对于d[1:]中的项目:
如果项目>> [5000, 4000, 3500, 3300]

您好,您的问题不清楚,对于您给出的示例,我看不到任何排序。请提供一个更有意义的示例,以便我们可以帮助您,如果有两个相等的值,会发生什么情况?它们是否都存储了?到目前为止,所有答案都只进行过滤,没有排序。如果你想不想排序,你需要一个更好的例子。非常感谢!我试过这样的方法,但我想我犯了错误。谢谢!