1

ネストされたリストがあります

a=[[x1,y1],[x2,y2],[x1,y2],[x2,y1],[x7,y7],[x1,y3]]

私はそれを次のようにソートしたい:

a=[[x1,y1],[x1,y2],[x1,y3],[x2,y1],[x2,y2],[x7,y7]]

ラムダ関数を使用しようとしましたが、コンパイルできませんでした:

a=sorted(a,lambda x,y:x==y?x[0]+x[1],x[0])

sorted目的の出力を取得するにはどうすればよいですか?

4

2 に答える 2

1

sorted(a)箱から出してすぐに、あなたが望むものを与えると信じています:

>>> a = [[1,1], [2,2], [1,2], [2,1], [7,7], [1,3]]
>>> sorted(a)
[[1, 1], [1, 2], [1, 3], [2, 1], [2, 2], [7, 7]]
于 2013-04-07T11:13:21.437 に答える
1

条件式など、実際の Python 構文を使用できます。

sorted(a, key=lambda x: x[0] + x[1] if x == y else x[0])

?これは、構文を Javascript 条件式構文として解釈することに基づいています。

もちろん、これは別のy変数がどこかに定義されていることを前提としています。

>>> a = [[1,1], [2,2], [1,2], [2,1], [7,7], [1,3]]
>>> y = [1, 1]
>>> sorted(a, key=lambda x: x[0] + x[1] if x == y else x[0])
[[1, 2], [1, 3], [1, 1], [2, 2], [2, 1], [7, 7]]
于 2013-04-07T10:50:53.203 に答える