質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

156閲覧

配列の要素の最小値を返す方法についての質問

physics303

総合スコア89

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/06/15 02:04

編集2018/06/18 03:02

関数distance()と配列set=[set1,set2,set3,…]が既に定義されています。配列setの各要素のdistanceを計算し、その最小値を返すsetの要素を調べたいです。つまり、distance(set1),distance(set2),distance(set3)…とみていったときに、distanceを最小にする、setXを知りたいということです。

私は次のようにコーディングしましたが、もっと良い方法はありますか?

python

1minimam = 100000 2for p in set 3 if minimam > distance(p): 4 minimam = distance(p) 5 m = p

こうすれば、mの最終値が欲しかったものになります。もっとスマートに(例えば1行で)ソースをかけないものでしょうか。

よろしくお願いいたします。

編集**
distanceが引数を二つとる関数で、一方を固定している場合、どうしたらよいでっしょうか。つまり、

python

1minimam = 100000 2j = 1 3for p in set 4 if minimam > distance(p,j): 5 minimam = distance(p,j) 6 m = p

を一行で書くにはどうしたらよいのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

minimum = min(set, key=distance)

Pythonのset型の型名を上書きしてしまうので、変数名にsetは使わない方がいいですよ。


1変数関数でなければならないので1変数関数を定義するしかないです。

Python

1j = 1 2 3def distance_for_min(x) 4 return distance(p,j) 5 6minimum = min(set, key=distance_for_min)

とかですね。ローカル変数を束縛した関数を定義します。

あるいはラムダ

Python

1j = 1 2minimum = min(set, key=lambda x: distance(x, j))

と書きます。

投稿2018/06/15 02:21

編集2018/06/18 04:22
quickquip

総合スコア11038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

physics303

2018/06/18 02:52

ありがとうございます。できれば、何をしているのかを教えてもらえないでしょうか。keyで調べてみたのですが、いまいちわからず。 それから、distanceが多変数の場合はどうでしょうか。つまり、 minimam = 100000 j = 1 for p in set if minimam > distance(p,j): minimam = distance(p,j) m = p のような場合にmを一行で求めるにはどうしたらよいのでしょうか。
quickquip

2018/06/18 04:24

質問のソースと同じことをするわけなので、何をしているのかを解説する意味はありません。わからないのは「関数そのものを引数で渡す」という概念でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問