回答編集履歴

2

修正

2018/01/07 05:34

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -22,19 +22,23 @@
22
22
 
23
23
  ```Python
24
24
 
25
- def all2x(my_list):
25
+ >>> for i in [3, 1, 4]:
26
26
 
27
- for i in my_list:
27
+ ... print(i)
28
28
 
29
- print(i)
29
+ ...
30
30
 
31
- return my_list
31
+ 3
32
+
33
+ 1
34
+
35
+ 4
32
36
 
33
37
  ```
34
38
 
35
39
 
36
40
 
37
- エラー自体はただの範囲外エラーです。
41
+ エラー自体はただの範囲外エラーです。(otnさんが指摘されているとおり)
38
42
 
39
43
  ```Python
40
44
 

1

追記

2018/01/07 05:34

投稿

LouiS0616
LouiS0616

スコア35660

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