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

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

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

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

Q&A

2回答

581閲覧

引数の番号に対応した名前をつける方法

yamx

総合スコア0

Python 3.x

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

0グッド

0クリップ

投稿2020/09/16 05:44

前提・実現したいこと

関数を作って計算したものに名前をつける時に、
それに対応した番号を自動的に振る方法がわかりません。

発生している問題・エラーメッセージ

make_corr()という関数を作って、それの引数と対応する名前を付けたいのですが、番号の部分を一つ一つ書き変えるのではなく、
自動的に番号を降る方法がないか教えていただきたいです。

エラーメッセージ

該当のソースコード

#ch24_25の数字のところを自動で変更しながらそれぞれ書く方法がないか調べる
ch24_25 = make_corr(24,25)
ch24_26 = make_corr(24,26)
ch24_27 = make_corr(24,27)
ch24_28 = make_corr(24,28)
ch25_26 = make_corr(25,26)
ch25_27 = make_corr(25,27)
ch25_28 = make_corr(25,28)
ch26_27 = make_corr(26,27)
ch26_28 = make_corr(26,28)
ch27_28 = make_corr(27,28)

python3

1ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

引数をキーにして、dict に結果を格納するといいと思います。

python

1data = {} 2 3 4def f(i, j): 5 return i + j 6 7 8for i, j in zip(range(5), range(5)): 9 data[(i, j)] = f(i, j) 10 11print(data) 12# {(0, 0): 0, (1, 1): 2, (2, 2): 4, (3, 3): 6, (4, 4): 8} 13 14# 引数 2,2の結果をみたいときは 15print(data[(2, 2)])

投稿2020/09/16 05:48

編集2020/09/16 05:49
tiitoi

総合スコア21956

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

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

0

註: 質問に対する直接的な回答ではありませんが、根本の問題の解決策の一つになると考えます。

呼び出し回数や引数のバリエーション、関数自体の性質にも依りますが、
次のように結果をキャッシュしてやれば毎度呼び出しても計算コストはあまりかかりません。

Python

1import functools 2import time 3 4@functools.lru_cache(maxsize=None) 5def func(i, j): 6 time.sleep(3) # 重めの計算 7 return i*j 8 9time1 = time.time() 10ret = func(3, 14) 11time2 = time.time() 12print(f'一回目: 返り値={ret} 経過時間={time2-time1:.6f}秒') 13 14time1 = time.time() 15ret = func(3, 14) 16time2 = time.time() 17print(f'二回目: 返り値={ret} 経過時間={time2-time1:.6f}秒')

実行結果 Wandbox

一回目: 返り値=42 経過時間=3.015089秒 二回目: 返り値=42 経過時間=0.000005秒

参考

投稿2020/09/16 06:20

編集2020/09/16 06:22
LouiS0616

総合スコア35660

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問