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

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

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

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

Q&A

解決済

2回答

2063閲覧

Python3 差の合計 ループ処理の内包表記 関数 クラス

python3_beginer

総合スコア46

Python 3.x

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

0グッド

0クリップ

投稿2018/04/13 04:21

問題)

N行分、整数が出力される
さらに、最初の数字に1を追加し、それぞれの整数の差の合計を求めたい
最初の数字に1を追加するのは入力される値とは関係ない

N
f_1
...
f_N

条件
・1 ≦ N ≦ 100
・1 ≦ f_i ≦ 100 (1 ≦ i ≦ N)

入力例1
3
3
1
4

3行分の整数が出力される
この最初の数字に1を追加し、それぞれの整数の差の合計を求めたい

つまり
1 ← 1を追加
3
1
4

出力例1
7

入力例2
8
17
28
11
62
64
4
7
17

8行分の整数が出力される
この最初の数字に1を追加し、それぞれの整数の差の合計を求めたい

つまり
1 ← 1を追加
8
17
28
11
62
64
4
7
17

出力例2
170

質問)

上記の問題を処理できるコードを作成した。

①ループ処理

コード N = int(input()) data = [] for num in range(N): data.append(int(input())) data.insert(0,1) lst = [] for x in range(0,N): diff = abs(data[x]-data[x+1]) lst.append(diff) print(sum(lst))

②内包表記

コード N = int(input()) data_1 = [int(input()) for x in range(N)] data_1.insert(0,1) diff =[abs(data_1[x]-data_1[x+1]) for x in range(N)] print(sum(diff))

上記の二つとも正しく動作した。
しかし、②内包表記の作成過程で

diff =[abs(data_1[x]-data_1[x+1]) for x in range(N)]

上記のdiffリストを作成する際に、lambda式を利用したが、エラーがでた。

初歩的な質問で申し訳ございませんが、こちらのエラー原因を教えて頂けないでしょうか。

コード diff = [list(map(lambda x: abs(data_1[x]-(data_1[x+1])), for x in range(N)))] File "Main.py", line 30 diff = [list(map(lambda x: abs(data_1[x]-(data_1[x+1])), for x in range(N)))] ^ SyntaxError: invalid syntax

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

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

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

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

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

guest

回答2

0

map(function, iterable, ...)

mapの第二引数はiterableです。(例えばlistなど)
for x in range(N)ではiterableになりません。

投稿2018/04/13 04:48

fuzzball

総合スコア16731

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

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

fuzzball

2018/04/13 04:55

というか、なんでmap使ってるのか‥。
hayataka2049

2018/04/13 05:14

本当だ、あんまりちゃんと見てませんでした。私が直した通りにするとこんどはTypeError: map() must have at least two arguments.が・・・
python3_beginer

2018/04/13 14:46

お返事ありがとうございます。 質問する前に、知識を整理するべきでした。 次回からはなるべく簡潔に質問できるように努めます。 いつもご指導ありがとうございます。
guest

0

ベストアンサー

","が余計で構文エラーになっています。直したところで他のエラーが出る可能性はありますが・・・。
私の環境だと次のようなエラーメッセージが出ましたが、

python

1 File "testcode.py", line 1 2 diff = [list(map(lambda x: abs(data_1[x]-(data_1[x+1])), for x in range(N)))] 3 ^ 4SyntaxError: invalid syntax

^がエラー箇所(の近く)を教えてくれます。こういうものは出ませんでしたか?

追記

すみません、質問文のコードもよく読み直したらちゃんと表示されてた。字が小さくて見落としてました。
エラーメッセージに気を配ると良いですよ。たいてい解決の糸口があります。

投稿2018/04/13 04:26

編集2018/04/13 04:28
hayataka2049

総合スコア30933

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

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

python3_beginer

2018/04/13 14:40

お返事ありがとうございます。 基礎的な知識が抜けていて、単純な質問をしてしまいました。 もう一度、基礎固めしたいと思います。 いつもご指導ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問