Python 对列表进行排序,但保留指定的值
我需要使用Python 对列表进行排序,但保留指定的值,python,arrays,sorting,Python,Arrays,Sorting,我需要使用numpy.argsort函数(或与之相同的代码),但忽略一个具体的值,例如-1,并将其保留在结果数组中 如果这是列表:[5,8,1,-1,2,4],我需要一个类似于[3,4,0,-1,1,2]的结果 如何操作?找到并删除要忽略的每个值,记住它们的位置。例如,在本例中,您可以将索引和值存储为ignore=(3,-1) 像往常一样对剩余的列表进行排序 重新插入缺少的元素:mylist.insert(忽略[0],忽略[1]) 这会让你动起来吗?找到并删除每个要忽略的值,记住它们的位置。例如
numpy.argsort
函数(或与之相同的代码),但忽略一个具体的值,例如-1,并将其保留在结果数组中
如果这是列表:[5,8,1,-1,2,4],我需要一个类似于[3,4,0,-1,1,2]的结果
如何操作?找到并删除要忽略的每个值,记住它们的位置。例如,在本例中,您可以将索引和值存储为
ignore=(3,-1)
像往常一样对剩余的列表进行排序
重新插入缺少的元素:mylist.insert(忽略[0],忽略[1])
这会让你动起来吗?找到并删除每个要忽略的值,记住它们的位置。例如,在本例中,您可以将索引和值存储为
ignore=(3,-1)
mylist=[5,8,1,-1,2,4]
print 'mylist: ',mylist
ignored=[]
new_my_list=[]
for i in range(len(mylist)):
if mylist[i]==-1:
ignored.append((i,mylist[i]))
else:
new_my_list.append(mylist[i])
print 'new_my_list without -1: ',new_my_list
mylist_sorted=list(np.argsort(new_my_list))
print 'mylist_sorted: ',mylist_sorted
temp_orders=list(np.zeros(len(mylist_sorted)))
for fr in range(len(mylist_sorted)):
idx=mylist_sorted[fr]
temp_orders[idx]=fr
print 'temp_orders: ',temp_orders
for ig in range(len(ignored)):
ig_add=ignored[ig]
temp_orders.insert(ig_add[0], ig_add[1])
print 'new_my_list with -1: ',temp_orders
像往常一样对剩余的列表进行排序
重新插入缺少的元素:mylist.insert(忽略[0],忽略[1])
这能让你动起来吗
mylist=[5,8,1,-1,2,4]
print 'mylist: ',mylist
ignored=[]
new_my_list=[]
for i in range(len(mylist)):
if mylist[i]==-1:
ignored.append((i,mylist[i]))
else:
new_my_list.append(mylist[i])
print 'new_my_list without -1: ',new_my_list
mylist_sorted=list(np.argsort(new_my_list))
print 'mylist_sorted: ',mylist_sorted
temp_orders=list(np.zeros(len(mylist_sorted)))
for fr in range(len(mylist_sorted)):
idx=mylist_sorted[fr]
temp_orders[idx]=fr
print 'temp_orders: ',temp_orders
for ig in range(len(ignored)):
ig_add=ignored[ig]
temp_orders.insert(ig_add[0], ig_add[1])
print 'new_my_list with -1: ',temp_orders
对最后一个循环的一个改进:
for ig_idx, ig_value in ignored):
temp_orders.insert(ig_idx, ig_val)
对最后一个循环的一个改进:
for ig_idx, ig_value in ignored):
temp_orders.insert(ig_idx, ig_val)
我不明白你对“具体价值”的定义,你有没有试着存储它,用
-np.inf
替换它,然后把它改回来?我不明白你对“具体价值”的定义,你有没有试着存储它,用-np.inf
替换它,然后把它改回来?多谢了,它符合你的想法。这里有一个非常简单的实现:非常感谢Prune,它符合您的想法。这里有一个非常幼稚的实现:您在这方面做得很好!我建议您在学习更多Python时,时不时地回到这段代码,看看您可以改进什么。我加了一个。你在这方面做得很好!我建议您在学习更多Python时,时不时地回到这段代码,看看您可以改进什么。我加了一个。