相关疑难解决方法(0)

如何在Python中获取已排序数组的索引

我有一个数字列表:

myList = [1, 2, 3, 100, 5]
Run Code Online (Sandbox Code Playgroud)

现在,如果我对此列表进行排序以获取[1, 2, 3, 5, 100].我想要的是排序顺序中原始列表中元素的索引,即[0, 1, 2, 4, 3] --- ala MATLAB的sort函数,它返回值和索引.

python indexing sorted

180
推荐指数
9
解决办法
17万
查看次数

如何返回排序列表的索引?

我需要对列表进行排序,然后返回一个列表,其中包含列表中已排序项的索引.例如,如果我要排序的列表是[2,3,1,4,5],我需要[2,0,1,3,4]返回.

这个问题是在字节上发布的,但我想我会在这里重新发布. http://bytes.com/topic/python/answers/44513-sorting-list-then-return-index-sorted-item

我特别需要根据对象的属性对对象列表进行排序.然后,我需要重新排序相应的列表以匹配新排序列表的顺序.

有没有办法做到这一点?

python

113
推荐指数
4
解决办法
16万
查看次数

在Python中计算列表的秩向量的有效方法

我正在寻找一种有效的方法来计算Python中列表的秩向量,类似于R的rank函数.在元素之间没有联系的简单列表中,列表的等级向量的元素il应该是x,当且仅当l[i]是排序列表中的第x个元素时.到目前为止,这很简单,以下代码片段可以解决这个问题:

def rank_simple(vector):
    return sorted(range(len(vector)), key=vector.__getitem__)
Run Code Online (Sandbox Code Playgroud)

然而,如果原始列表具有联系(即具有相同值的多个元素),则事情变得复杂.在这种情况下,具有相同值的所有元素应该具有相同的等级,这是使用上述朴素方法获得的等级的平均值.所以,例如,如果我有[1, 2, 3, 3, 3, 4, 5],天真的排名给了我[0, 1, 2, 3, 4, 5, 6],但我想拥有的是[0, 1, 3, 3, 3, 5, 6].在Python中哪一个是最有效的方法?


脚注:我不知道NumPy是否已经有了实现这一目标的方法; 如果确实如此,请告诉我,但无论如何我都会对纯Python解决方案感兴趣,因为我正在开发一个在没有NumPy的情况下也可以工作的工具.

python sorting list ranking

27
推荐指数
3
解决办法
4万
查看次数

没有lambda表达式的python排序

我经常使用lambda表达式在Python中进行排序,虽然它工作正常,但我觉得它不是很易读,并希望有更好的方法.这是我的典型用例.

我有一个数字列表,例如, x = [12, 101, 4, 56, ...]

我有一个单独的索引列表: y = range(len(x))

我想y根据值中的值排序x,我这样做:

y.sort(key=lambda a: x[a])
Run Code Online (Sandbox Code Playgroud)

有没有使用lambda这样做的好方法?

python sorting lambda

7
推荐指数
3
解决办法
2553
查看次数

如何返回列表中每个元素的顺序索引?

比方说我有一个数字列表L=[50, 10, 30],在Python中我想返回一个列表,给出每个元素的顺序索引L,这将是这个输出:[2, 0, 1].

尽管这似乎是一个简单的任务,在这个网站(很多问题,在这里 在这里,并在这里例如)注重反过来,这意味着从指数排序列表的观点:[1, 2, 0],这不是我想要的.

谢谢,

编辑:关于重复,我希望他们也被计算(按照外观顺序绘制).[50,30,10,30]会给[3,1,0,2]

python sorting indexing

5
推荐指数
1
解决办法
115
查看次数

给定一个"混乱"列表L,得到一个列表,其中每个元素是L的相应元素的索引,如果L被排序

期望的输出

我想要一个函数返回一个列表,这样,给定一个"混乱"列表l,每个元素是相应元素的索引l,如果l被排序.(我没有想到一种不太复杂的说法,对不起.)

例子

f([3,1,2]) = [2,0,1]

f([3,1,2,2,3])= [3,0,1,2,4],因为输入已排序[1,2,2,3,3].

(这对某些统计数据计算很有用.)

我的尝试

我想出了一种方法来做这个功能,但这是python - 似乎应该有一个单行来做这个,或者至少是一个更清洁,更清晰的方式.

def getIndiciesInSorted(l):
    sortedL = sorted(l)
    outputList = []
    for num in l:
        sortedIndex = sortedL.index(num)
        outputList.append(sortedIndex)
        sortedL[sortedIndex] = None
    return outputList

l=[3,1,2,2,3] 
print getIndiciesInSorted(l)
Run Code Online (Sandbox Code Playgroud)

那么,我怎样才能更简洁地写出来呢?有清晰易读的清单解决方案吗?

python

4
推荐指数
1
解决办法
263
查看次数

基于python中嵌套列表中的列表之一进行排序

我有一个清单 [[4,5,6],[2,3,1]].现在我想根据list[1]输出 排序列表[[6,4,5],[1,2,3]].所以基本上我正在排序2,3,1和维护顺序list[0].

在搜索时,我得到了一个基于每个列表的第一个元素进行排序的函数,但不是为此.此外,我不想重新创建列表[[4,2],[5,3],[6,1]],然后使用该功能.

python sorting nested list

3
推荐指数
2
解决办法
235
查看次数

标签 统计

python ×7

sorting ×4

indexing ×2

list ×2

lambda ×1

nested ×1

ranking ×1

sorted ×1