2017-12-17 11 views
-2

私はこのように見えるネストされたリストを持っています。ネストされたリストのすべての行の最下位要素を見つける

[[0.0, 1.4142135623730951, 2.8284271247461903, 2.23606797749979], 
[1.4142135623730951, 0.0, 1.4142135623730951, 1.0], 
[2.8284271247461903, 1.4142135623730951, 0.0, 1.0], 
[2.23606797749979, 1.0, 1.0, 0.0]] 

すべてのサブリストで最小の要素を探したいと思っています。助けてくれてありがとう!

+2

あなたは何を試しましたか? – pstatix

+0

正直なところ私はこの回答を投稿する前にグーグルで調べてみました。なぜ人々が質問に否定的なフィードバックを与えているのかわかりません。私は間違ったことをしましたか? –

+0

@AshleyLarson確かに何か試しましたか? – RoadRunner

答えて

5

はまあ他の人が既に答えを投稿しているので、あなたはそうのようなリスト内包と呼ばれるものを使用して、リスト内の各サブリストの最小値を格納することができます

new_s = [min(x) for x in s]

Pythonは組み込みのmin()機能それを持っていますiterable(すなわち、あなたのサブリストの1つ)を検索し、最小値を見つけます。 リスト内包表記を使用すると、それらの値のリストを作成できます。それは次のように読み取ることができる。

編集 "Sにおける各x(サブリスト)(親リスト)の最小値のリスト":コメントの使用のため

new_s = [sorted(x)[1] for x in s]

"s(親リスト)の各x(サブリスト)のxのソートされた配列の2番目の要素のリスト"

+0

最低の要素ではなく、2番目に低い要素が必要な場合。私はnew_s = [min(x)> 0]ならばxのsに対して[min(x)]のようなものを試しましたが、同じ答えが得られました。 –

+0

@AshleyLarson私の編集をご覧ください。しかし、真の目標が最低から最低ではなく、最低から最低になるようにしていたのであれば、あなたは本当にあなたの質問を更新したはずです。 – pstatix

+0

すべての零点を非常に大きな数に置き換えて、あなたの方法を使用しました。それは正常に働いた。 –

1

あなたはこの場合minで組み込み関数を利用する場合、リスト内包表記より多少効率的であるmapを、使用することができます。

s = [[0.0, 1.4142135623730951, 2.8284271247461903, 2.23606797749979], 
[1.4142135623730951, 0.0, 1.4142135623730951, 1.0], 
[2.8284271247461903, 1.4142135623730951, 0.0, 1.0], 
[2.23606797749979, 1.0, 1.0, 0.0]] 
new_s = list(map(min, s)) 

出力:

[0.0, 0.0, 0.0, 0.0] 

などの代替リストの内包@ pstatix記載:

new_s = [min(i) for i in s] 
+0

それはそれを出力しません。実際、 'new_s'は' map'オブジェクトを格納します。 'new_s = list(map(min、s)) 'をセットすることによって、' map'を 'list'に変換する必要があります。 – pstatix

+2

さらにリストの理解力があります: 'new_s = [min(x)for x in s]' – pstatix

+0

@StefanPochmann * Pythonic * –

関連する問題