下記コードadd_all()
は外部でadd()
を複数回呼び出す代わりに複数の引数を取れるようにしたものです。
_add()
は複数の引数を持ち再帰的に呼び出されるので外部から隠してあり、質問の本質とも関係ありません。
add_all()
の引数は1つでも構わないのでadd(*values: int)
として2つをまとめてしまおうと考えました。
ですが、実際には*values
とすると、たとえ1つの要素しか与えなくても関数内でfor
ループが回されるために遅くなりました ([Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ)。
複数引数を取りながらも、与える要素が1つのときの速さを損なわせない上手い方法はないのでしょうか?
Python
1def add(value: int) -> None: 2 _add(value, 0, 0) 3 4 5def add_all(*values: int) -> None: 6 """ 7 外部での↓の代わり 8 for v in values: 9 add(v) 10 """ 11 for v in values: 12 _add(v, 0, 0) 13 14 15def add(*values: int) -> None: 16 """上2つを統合できるが、与えるvalueが1つのとき、add(value)より遅い""" 17 for v in values: 18 _add(v, 0, 0)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/30 06:44
退会済みユーザー
2020/06/30 06:48
2020/06/30 06:50
退会済みユーザー
2020/06/30 06:51
2020/06/30 07:00
2020/06/30 07:05
退会済みユーザー
2020/06/30 07:25 編集