Help us understand the problem. What is going on with this article?

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

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

例:
入力
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

まとめ

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

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした