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

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

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

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

Python 3.x

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

Q&A

解決済

1回答

774閲覧

Python この下記の問題について

Curry

総合スコア4

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

Python 3.x

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

0グッド

0クリップ

投稿2022/11/26 01:22

問題の答え、解説を見たのですが理解できないところがあったので教えていただきたいです。

問題:自然数 N と N 個の要素の数列 M が与えられます。1 ≦ i ≦ N の各 i について、i 行目には以下の数列を出力してください。

  • 1 以上 M_i 以下のすべての自然数を昇順、半角スペース区切りで出力してください。

答え:

N = int(input())

M = [0] * N ←これの必要性がわからないです
values = input().split()
for i in range(N):
M[i] = int(values[i])

for i in range(N):
for j in range(1, M[i] + 1):
if j == M[i]:
print(j)
else:
print(j, end=" ")

言語:python3

補足情報(FW/ツールのバージョンなど)

初心者なのでよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

M = [0] * N ←これの必要性がわからないです

リストを初期化するために必要です。

簡単に言えば、「初期値を持つ箱をN個あらかじめ用意しておく」というイメージです。

M = [0] * N
と書いた場合、N個の要素(初期値0)を持つリストが生成され、そのリストが「M」という名前に紐づけられます。

たとえば、仮に
M = [0] * N
の行を
M=[] とか M=[] * N
にすると、

python

1 M[i] = int(values[i])

のところで

python

1IndexError: list assignment index out of range

というエラーが発生します。これは「箱が用意されていない(足りない)」ために起こるエラーです。
だから、あらかじめ M = [0] * N
として、箱を必要分だけ用意しておく必要があるんです。

投稿2022/11/26 01:36

編集2022/11/26 01:44
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Curry

2022/11/26 01:41

ありがとうございます!すごく納得しました! はじめたばかりで何もかもわからなくて、、 本当に助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問