python key=operator.itemgetter(1))如何工作?

问题描述 投票:0回答:1

我有一个矩阵,我需要找到最大元素和它的数量。如何在没有操作符的情况下重写它(用for)?

    for j in range(size - 1):
        i, val = max(enumerate(copy[j::, j]), key=operator.itemgetter(1))
        copy = change_rows(copy, j, i)
        P = change_rows(P, j, i) 

事实上,也许你可以解释一下这个字符串的意思?

i, val = max(enumerate(copy[j::, j]), key=operator.itemgetter(1))
python matrix key operator-keyword
1个回答
0
投票

让我们来分解这一行。

i, val = max(enumerate(copy[j::, j]), key=operator.itemgetter(1))

首先是 enumerate() 创建一个迭代器,在 copy[j::,j] 产生索引值对。例如:

>>> for i, val in enumerate("abcd"):
...     print(i, val)
...
0 a
1 b
2 c
3 d

下一步, max() 函数是用来寻找序列中最大的项目。但我们希望它的目标值是 copy[j::,j]的指数,而不是我们也从 enumerate(). 指定 key=operator.itemgetter(1) 告诉 max() 来看 (i,val) 对,并找出其中最大的 val.

这可能是更好地完成与 np.argmax()特别是因为 val 未使用。

>>> import numpy as np

>>> for j in range(size - 1):
...     i = np.argmax(copy[j::, j])    # Changed this line.
        copy = change_rows(copy, j, i)
        P = change_rows(P, j, i)
© www.soinside.com 2019 - 2024. All rights reserved.