Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@daichi_shika

簡単なアルゴリズムをPythonで実行する

More than 1 year has passed since last update.

リストの各要素を掛け合わせる関数を作成する

例:
入力
a=[1,2,3]
b=[4,5,6]

出力
->[4,10,18]

方針

まずは汚くても動くものを作成する。そのあとで余裕があればリファクタリングする。
まずは中身を書く、動いたら関数化する

a=[1, 2, 3]
b=[4, 5, 6]

[a[0] * b[0], a[1] * b[1], a[2] * b[2]]
#出力
[4, 10, 18]

とりあえず動いた。

関数化1

def calc(a, b):
  return [a[0] * b[0], a[1] * b[1], a[2] * b[2]]

しかし、これだとリストの要素が一つ増えたり減ったりしてしまったら対応できない。汎用性がないコード。なのでリファクタリングして汎用性をあげる。

calc_results = []
for i in range(len(a)):
  calc_results.append(a[i] * b[i])

リストを作って、リストの長さの回数だけ掛け算を行うandそれをリストに格納する。
これだとリストの要素が何個になっても対応できる。

関数化2

def calc(a,b):
  calc_results = []
  for i in range(len(a)):
    calc_results.append(a[i] * b[i])
  return calc_results

しかし、これだとコードがごちゃごちゃしているので次は可読性を高める。

calc_results = []
for (x,y) in zip (a,b):
  calc_results.append(x * y)
calc_results

リストやタプルなどの要素を同時に取得して使いたい場合は、zip()関数の引数にそれらを指定する。

関数化3

def calc(a,b):
  calc_results = []
  for (x,y) in zip (a,b):
    calc_results.append(x * y)
  return calc_results

まとめ

個人でやるなら汚いプログラムでもとりあえず動け精神でなんとかなると思うのですが、チームで開発すると、保守とかしやすい可読性や汎用性が高いコードの方がいいと思うので、まず動くものを作るのが一番大切だと思うのですが、その後にコードのリファクタリングをした方がいいのかもしれませんね。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
daichi_shika
2021年から独立系SEで勤務予定

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?