如何在python中使用条件进行排序
如何在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
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我更新了解决方案,使其包含一个可以接收两个参数的函数:要排序的列表和要避免的值。