2017-01-13 15 views
2

リスト内のリストを並べ替えて、値が最小から最大に、またはその逆になるようにする簡単な方法はありますか?私はこれまでのところ、主要な価値に基づいてリスト自体を注文することに関する情報しか見つけることができません。ここリスト内のリストのリスト

は一例であり:

data = [[8,7], [10,5,], [8,10]] 

>> [[7,8], [5,10], [8,10] 
+8

がFYIどのようにお見せ丸括弧を使用する 'tuple()'ではなく、角括弧を使用します。 –

答えて

6

は何のタプルがここに関与していない、リストのリストである、あなたはまた、組み合わせでそれを行うことができます...実際のリストにそれを回すためにそのmapオブジェクトにlistを使用ビルトインメソッドmapsortedの:イテレータを返しますmapのpython3では、

>>> data = [[8,7], [10,5,], [8,10]] 
>>> 
>>> list(map(sorted, data)) 
[[7, 8], [5, 10], [8, 10]] 

、あなたがリストとしてそれを必要とする場合、あなたがそれを使用している場合、あなたは、それ以外の場合は、listでそれをバックに変換する必要がありますので、ループt henをリストに変換する必要はありません。この方法でメモリを節約します。

編集:

あなたのコメントへの返信、あなたのような何かを行うことができます:

>>> def f(lst): 
     lst = sorted(lst) 
     return(lst[0], lst) 

>>> print(*map(f, data)) 
(7, [7, 8]) (5, [5, 10]) (8, [8, 10]) 

以上のコンパクトが、あまり読み:あなたがそれらを注文したい場合は

>>> print(*map(lambda lst: '{} - {}'.format(lst[0], lst), map(sorted, data)), sep='\n') 
7 - [7, 8] 
5 - [5, 10] 
8 - [8, 10] 
+0

番号ペアの先行する変数を印刷するための関数はありますか?すなわち、 [7,8]を7として、[7,8]。私が使用しようとした関数はソートされたペアのリストとしてそれを表示し、次に変数を出力します。 – alienmode

+0

@AaronSmith、更新された回答を確認してください。 –

+0

あなたに役立つことを嬉しく思います。あなたの問題であなたを助けたと思うものを受け入れることを検討してください。 –

10

dataの各要素(各listオブジェクト)をソートするリスト内包を使用:

data = [sorted(x) for x in data] 

data次のようになる:

[[7, 8], [5, 10], [8, 10]] 

あなたはこれを行うこともできます:

map(sorted, data) 

次に、あなたが持っているもの

1

それが依存インプレースまたはリストの発注者との新しいコピーが必要な場合

新しいコピーの場合、これらは `リスト()` sのとおりです。E他の答えはすでに、インスタンス

data = [[8,7], [10,5], [8,10]] 
new = [ sorted(elem) for elem in data ] 
print(new) 
それらに .sortのforループを使用して呼び出すには、場所にそれらを注文するための

ため

data = [[8,7], [10,5], [8,10]] 
for elem in data: 
    elem.sort() 
print(data)