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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

4027閲覧

python 2つのリストの合計を出力する関数の作り方

cks104

総合スコア11

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/06/10 06:58

編集2018/06/10 07:33

前提・実現したいこと

Q. 2つのリストの合計を出力する関数を作りましょう
以下のv1とv2をそれぞれの要素を合計して新しいリストをforループを使って、作成してください。 期待する結果は、[3,7, 11, 15, 19] です。

v1 = [2, 4 , 6, 8, 10]
v2 = [1, 3, 5, 7, 9]

回答:def list_add(v1, v2):
ここからの回答が分かりません。

for文を入れたりしてみましたが、期待する結果を導き出すことができませんでした。
pythonに詳しい方教えていただけませんか?
よろしくお願いいたします。

[以下、追記]
昨日pythonを始めたばかりで勉強が足りずに大変恐縮ですが、
試してみたコードを公開させていただきます。

v1=[2,4,6,8,10]
v2=[1,3,5,7,9]

def list_add(v1, v2):
for i in v1:
b= i + range(1,9,2)
print(b)

実行すると何も反応が返ってこない状況です。
インデントは、defとfor以下に設定して実行してみました。

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

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

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

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

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

namnium1125

2018/06/10 07:09 編集

ご自身で取り組まれたコードはなるべく公開していただけるとありがたいです。m(_ _)m
cks104

2018/06/10 07:34

コード公開がなく、大変失礼いたしました。追記させていただきましたので、もしお時間があればよろしくお願いいたします。
guest

回答3

0

ベストアンサー

Stars1024様の回答と被りますが、いただいたコードをもとにした場合はこうでしょうか?

python

1v1=[2,4,6,8,10] 2v2=[1,3,5,7,9] 3 4def list_add(v1, v2): 5 b = [] 6 for i in range(len(v1)): 7 b.append(v1[i] + v2[i]) 8 9 return b 10 11print(list_add(v1, v2))

bをリストとして初期化する必要があります。
リストに要素を追加するメソッドは.appendですから、これを利用して新規作成したbに要素を追加していきます。

for文のところの解説が必要でしたら返信ください。

おまけ。numpyを使うと楽に書けます。

python

1import numpy as np 2 3def list_add(v1, v2): 4 return list(np.array(v1)+np.array(v2))

ただし今回は上記2つのコードとも、要素数の違いにより起きるエラーは想定していません。

それと、コードは```(バッククォート3つ)で囲むと、この回答のようにインデントをきれいに表現できます。

投稿2018/06/10 07:48

namnium1125

総合スコア2043

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

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

退会済みユーザー

退会済みユーザー

2018/06/10 07:59 編集

appendを使えば新たにv3を初期化する必要がなくなりますね。勉強になりました。 ありがとうございます。
namnium1125

2018/06/10 08:01

でも速度面ではあんまりいいコードではないです。(^ ^; 私もリスト内方表記を利用したくなりましたが、とりあえず普通な書き方をした、という感じです。
cks104

2018/06/10 08:42

ご回答いただき、本当にありがとうございました!! 無事に問題解決することができました。 numpyやバッククォートはまだまだ使いこなせないですが、 勉強を続けていきたいと思います。
guest

0

こんにちは
質問欄に書いてあるとおり、関数def list_add(v1, v2):を使ってみました。

Python

1def list_add(v1,v2): 2 v3 = [0 for _ in range(len(v1))] #結果出力を[0,0,0,0,0]と初期化 3 for i in range(len(v1)): 4 v3[i] = v1[i] + v2[i] 5 return v3 6 7v1 = [2, 4 , 6, 8, 10] 8v2 = [1, 3, 5, 7, 9] 9 10print(list_add(v1,v2))

投稿2018/06/10 07:20

編集2018/06/10 07:21
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

cks104

2018/06/10 08:52

早急にご回答いただき、本当にありがとうございました!! 無事に期待する結果を得られることができました。 結果出力を初期化するところはまだまだ理解できませんが、 これからも勉強を続けていきたいと思います。
guest

0

map

python

1return list(map(lambda x, y: x + y, v1, v2))

zip

python

1return [x + y for x, y in zip(v1, v2)]

投稿2018/06/10 07:25

gingertail

総合スコア317

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

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

cks104

2018/06/10 08:46

教えていただき、ありがとうございました! 昨日、初めてのpythonの授業を受けて分からないことばかりのため、 ご回答いただいたコードも少しづつ勉強していきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問