Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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_Python 3.x_List_Sorting - Fatal编程技术网

如何在python中使用条件进行排序

如何在python中使用条件进行排序,python,python-3.x,list,sorting,Python,Python 3.x,List,Sorting,如何在python中构造带条件的排序?假设我有一张清单 a: [-1, 3, 4, 2, -1, -1, 1, 0] 如何仅对非-1的元素进行排序?(作为回报: [-1, 0, 1, 2, -1, -1, 3, 4] ) 如何对其他元素进行排序? (作为回报:[-1,3,-1,2,1,-1,4,0] ) 代码的语法是错误的,但它是否与此类似 result=sorted(a, key=lambda x: x!=-1,reverse=True) result=sorted(a, key=lamb

如何在python中构造带条件的排序?假设我有一张清单

a: [-1, 3, 4, 2, -1, -1, 1, 0]
如何仅对非-1的元素进行排序?(作为回报:

[-1, 0, 1, 2, -1, -1, 3, 4] )
如何对其他元素进行排序? (作为回报:
[-1,3,-1,2,1,-1,4,0]
) 代码的语法是错误的,但它是否与此类似

result=sorted(a, key=lambda x: x!=-1,reverse=True)
result=sorted(a, key=lambda x: [::2],reverse=True)

s
中所有肯定内容进行排序后,可以使用
next
iter

def sort_by(s, avoid = -1):
  sorted_vals = iter(sorted(filter(lambda x:x >= 0, s)))
  return [i if i == avoid else next(sorted_vals) for i in s]

print(sort_by([-1, 3, 4, 2, -1, -1, 1, 0]))
输出:

[-1, 0, 1, 2, -1, -1, 3, 4]

如果您对矢量化方法感兴趣,可以通过第三方库
numpy

import numpy as np

a = np.array([-1, 3, 4, 2, -1, -1, 1, 0])

a[a!=-1] = np.sort(a[a!=-1])

# array([-1,  0,  1,  2, -1, -1,  3,  4])

对其他元素进行排序也同样简单:

a[::2] = np.sort(a[::2])

# array([-1,  3, -1,  2,  1, -1,  4,  0])


相关:

谢谢你展示这个!虽然这个列表的答案是正确的,但是如果我只想对不是-1的数字进行排序……那么如果我的列表中有-2,这将不起作用。@JingLi我更新了解决方案,使其包含一个可以接收两个参数的函数:要排序的列表和要避免的值。