0

オブジェクトのリストがあり、並べ替えたいのですが、注意点が 1 つあります。

リストに、norm というインスタンスを持つオブジェクトがあるとします。

and norms are like [0.1,0.2,0.3.....0.9]

したがって、次のようなことをすると:

 potential_list.sort(key = lambda x:x._norm, reverse = True)

次に、次のように並べ替えます

       [0.9, 0.8... 0.1]

しかし、私はそれを数字に並べ替えたいので、

     number = 0.3

  then sorted list is [0.4,0.6,0.3,0.7 and so on] because

       0.4-0.3 = 0.1
       abs|0.4-0.5| = 0.1
       0.4 - 0.2 = 0.2
        abs|0.4 - 0.6| = 0.2

  So the sort is because of that difference.

これを行うにはどうすればよいですか。これらの [0.4,0.6....] は任意のオブジェクトのインスタンスではありません

したがって、リスト python 内の最も近い番号に関してリストをソートすること と、オブジェクトの属性に基づいてオブジェクトのリストをソートする方法を組み合わせたものですか?

4

2 に答える 2

2

まさにあなたがそれを説明した方法。

key=lambda x: abs(x._norm - number)
于 2012-04-23T22:13:39.620 に答える
1

まあ、単純にそれらを組み合わせてください:

>>> class X(object):
...     def __init__(self, n): self._norm = n
...     def __repr__(self): return str(self._norm)
... 
>>> lst = [X(0.1),X(0.2), X(0.3), X(0.4), X(0.5), X(0.6), X(0.7), X(0.8), X(0.9)]
>>> lst.sort(key=lambda x: abs(x._norm - 0.5))
>>> lst
[0.5, 0.4, 0.6, 0.7, 0.3, 0.2, 0.8, 0.1, 0.9]
于 2012-04-23T22:13:49.853 に答える