teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2018/01/07 05:34

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -10,13 +10,15 @@
10
10
  printデバッグをしてみると、すぐに理由がわかるかと思いますよ。
11
11
  下記のようにループを書いた場合、iは添え字ではなく各要素の値となります。
12
12
  ```Python
13
- def all2x(my_list):
14
- for i in my_list:
13
+ >>> for i in [3, 1, 4]:
15
- print(i)
14
+ ... print(i)
16
- return my_list
15
+ ...
16
+ 3
17
+ 1
18
+ 4
17
19
  ```
18
20
 
19
- エラー自体はただの範囲外エラーです。
21
+ エラー自体はただの範囲外エラーです。(otnさんが指摘されているとおり)
20
22
  ```Python
21
23
  >>> hoge = [1, 2]
22
24
  >>> hoge[0]

1

追記

2018/01/07 05:34

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -2,4 +2,50 @@
2
2
  ```Python
3
3
  for i, _ in enumerate(my_list):
4
4
  my_list[i] *= 2
5
- ```
5
+ ```
6
+
7
+ ---
8
+ > なぜエラーになるのかわかりません
9
+
10
+ printデバッグをしてみると、すぐに理由がわかるかと思いますよ。
11
+ 下記のようにループを書いた場合、iは添え字ではなく各要素の値となります。
12
+ ```Python
13
+ def all2x(my_list):
14
+ for i in my_list:
15
+ print(i)
16
+ return my_list
17
+ ```
18
+
19
+ エラー自体はただの範囲外エラーです。
20
+ ```Python
21
+ >>> hoge = [1, 2]
22
+ >>> hoge[0]
23
+ 1
24
+ >>> hoge[1]
25
+ 2
26
+ >>> hoge[2]
27
+ Traceback (most recent call last):
28
+ File "<stdin>", line 1, in <module>
29
+ IndexError: list index out of range
30
+ ```
31
+
32
+ ついでに
33
+ ---
34
+ リストのインスタンスの名前として、`list`は使わないでください。
35
+ 組み込み型のlistを潰してしまい、具体的には次のような不可解なエラーを引き起こします。
36
+ ```Python
37
+ >>> list(range(3))
38
+ [0, 1, 2]
39
+ >>> list = [4, 5, 6]
40
+ >>> list(range(3))
41
+ Traceback (most recent call last):
42
+ File "<stdin>", line 1, in <module>
43
+ TypeError: 'list' object is not callable
44
+ ```
45
+
46
+ 同様に、`str`、`double`、`max`、`min`、`id`などは使ってはいけません。
47
+
48
+ ---
49
+ teratailには、上記のようにコードを見やすく表示する機能があります。
50
+ 質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
51
+ 特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。