回答編集履歴
11
w
test
CHANGED
@@ -28,12 +28,13 @@
|
|
28
28
|
(検索サイトによる翻訳「'Tuple'オブジェクトは整数として解釈できません」)
|
29
29
|
というエラーになる。
|
30
30
|
|
31
|
-
なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れないから。
|
31
|
+
なんでかというと、range関数は、引数に、1個以上3個以下の「整数値」しか受け取れないから。
|
32
32
|
|
33
|
+
range関数に対して、
|
33
|
-
|
34
|
+
(50,100,5) というタプルをアンパックせずに渡すと、
|
34
|
-
|
35
|
+
「整数値」しか受け取れないrange関数にタプルという「整数値ではない」オブジェクトを渡すことになるから、エラーになる。
|
35
|
-
|
36
|
+
|
36
|
-
*をつけてdataを3つの整数値にアンパック
|
37
|
+
一方、 *をつけてdataを3つの整数値にアンパックした場合は、range関数に3つの「整数」の引数を渡すことになるんで、正常に実行できる。
|
37
38
|
|
38
39
|
(「3つ以下の要素を持つタプルを渡したら自動的にアンパックしてくれれば直感的で楽なのにどうしてそうなってないの?」って思うかもしれないけど、そういうものだと割り切るしかない)
|
39
40
|
|
10
w
test
CHANGED
@@ -25,6 +25,7 @@
|
|
25
25
|
```
|
26
26
|
これを実行すると
|
27
27
|
TypeError: 'tuple' object cannot be interpreted as an integer
|
28
|
+
(検索サイトによる翻訳「'Tuple'オブジェクトは整数として解釈できません」)
|
28
29
|
というエラーになる。
|
29
30
|
|
30
31
|
なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れないから。
|
9
あ
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
|
-
質問のコードを実行した場合、argに
|
2
|
+
質問のコードを実行した場合、argに代入されるのは、
|
3
|
-
{'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書(dictオブジェクト)。
|
3
|
+
{'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書(dictオブジェクト)。
|
4
4
|
|
5
5
|
で、リストとは異なり、辞書({'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90})にたいしてfor ky in arg:のように、for文を使うと、
|
6
6
|
左のkyには、辞書の各要素の全体({'A':98})ではなく、辞書の各要素の「キー」({'A':98}のキーである'A')が順次代入される。
|
8
w
test
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
|
2
2
|
質問のコードを実行した場合、argにバインドされるのは、
|
3
|
-
{'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書(dictオブジェクト)。これがまるごと
|
3
|
+
{'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書(dictオブジェクト)。これがまるごと代入される。
|
4
4
|
|
5
5
|
で、リストとは異なり、辞書({'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90})にたいしてfor ky in arg:のように、for文を使うと、
|
6
|
-
左のkyには、辞書の各要素の全体({'A':98})ではなく、辞書の各要素の「キー」({'A':98}のキーである'A')が順次
|
6
|
+
左のkyには、辞書の各要素の全体({'A':98})ではなく、辞書の各要素の「キー」({'A':98}のキーである'A')が順次代入される。
|
7
7
|
|
8
8
|
|
9
9
|
だから
|
7
q
test
CHANGED
@@ -34,4 +34,7 @@
|
|
34
34
|
|
35
35
|
*をつけてdataを3つの整数値にアンパックすれば、range関数に3つの整数の引数を渡すことになるから、正常に実行できる。
|
36
36
|
|
37
|
+
(「3つ以下の要素を持つタプルを渡したら自動的にアンパックしてくれれば直感的で楽なのにどうしてそうなってないの?」って思うかもしれないけど、そういうものだと割り切るしかない)
|
37
38
|
|
39
|
+
|
40
|
+
|
6
w
test
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
|
30
30
|
なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れないから。
|
31
31
|
|
32
|
-
data= (50,100,5)に対して
|
32
|
+
data= (50,100,5) (=タプル)に対して、アンパックせずに
|
33
33
|
range(data) を実行しようとすると、整数値しか受け取れないrange関数に、タプルという「整数値ではない」オブジェクトを渡すことになるから、エラーになる。
|
34
34
|
|
35
35
|
*をつけてdataを3つの整数値にアンパックすれば、range関数に3つの整数の引数を渡すことになるから、正常に実行できる。
|
5
w
test
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
|
2
2
|
質問のコードを実行した場合、argにバインドされるのは、
|
3
|
-
{'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書
|
3
|
+
{'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書(dictオブジェクト)。これがまるごとバインドされる。
|
4
4
|
|
5
|
-
で、リストとは異なり、辞書
|
5
|
+
で、リストとは異なり、辞書({'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90})にたいしてfor ky in arg:のように、for文を使うと、
|
6
6
|
左のkyには、辞書の各要素の全体({'A':98})ではなく、辞書の各要素の「キー」({'A':98}のキーである'A')が順次バインドされる。
|
7
7
|
|
8
8
|
|
9
9
|
だから
|
10
|
-
実行すると
|
10
|
+
print(ky + ' : ' +str(arg[ky])) を実行すると
|
11
11
|
'A':98 : 98 (〜略)
|
12
12
|
とならず
|
13
13
|
A : 98 (〜略)
|
4
2
test
CHANGED
@@ -3,14 +3,14 @@
|
|
3
3
|
{'A':98, 'B':76, 'C':54, 'D':56, 'E':78,'F':90} という辞書みたいなもの。これがまるごとバインドされる。
|
4
4
|
|
5
5
|
で、リストとは異なり、辞書みたいなやつ(arg)にたいしてfor ky in arg:のように、for文を使うと、
|
6
|
-
左のkyには、辞書全体({'A':98})ではなく、辞書の「キー」({'A':98}のキーである'A')が順次バインドされる。
|
6
|
+
左のkyには、辞書の各要素の全体({'A':98})ではなく、辞書の各要素の「キー」({'A':98}のキーである'A')が順次バインドされる。
|
7
7
|
|
8
8
|
|
9
9
|
だから
|
10
|
-
実行
|
10
|
+
実行すると
|
11
11
|
'A':98 : 98 (〜略)
|
12
12
|
とならず
|
13
|
-
A : 98
|
13
|
+
A : 98 (〜略)
|
14
14
|
となる。
|
15
15
|
|
16
16
|
|
3
r
test
CHANGED
@@ -27,10 +27,11 @@
|
|
27
27
|
TypeError: 'tuple' object cannot be interpreted as an integer
|
28
28
|
というエラーになる。
|
29
29
|
|
30
|
-
なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れない。
|
30
|
+
なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れないから。
|
31
|
+
|
31
32
|
data= (50,100,5)に対して
|
32
33
|
range(data) を実行しようとすると、整数値しか受け取れないrange関数に、タプルという「整数値ではない」オブジェクトを渡すことになるから、エラーになる。
|
33
|
-
|
34
|
+
|
34
35
|
*をつけてdataを3つの整数値にアンパックすれば、range関数に3つの整数の引数を渡すことになるから、正常に実行できる。
|
35
36
|
|
36
37
|
|
2
w
test
CHANGED
@@ -27,7 +27,7 @@
|
|
27
27
|
TypeError: 'tuple' object cannot be interpreted as an integer
|
28
28
|
というエラーになる。
|
29
29
|
|
30
|
-
なんでかというと、range関数は、引数に、1個以上3個
|
30
|
+
なんでかというと、range関数は、引数に、1個以上3個以下の整数値しか受け取れない。
|
31
31
|
data= (50,100,5)に対して
|
32
32
|
range(data) を実行しようとすると、整数値しか受け取れないrange関数に、タプルという「整数値ではない」オブジェクトを渡すことになるから、エラーになる。
|
33
33
|
|
1
え
test
CHANGED
@@ -14,11 +14,11 @@
|
|
14
14
|
となる。
|
15
15
|
|
16
16
|
|
17
|
-
辞書とリストで扱いが異なるのはなんでなの?
|
17
|
+
辞書とリストで扱いが異なるのはなんでなの?って思うかもしれないけど、そういうものだと覚えるしかない。
|
18
18
|
|
19
19
|
> なぜタプルのままではなくてアンパックをして3つの引数にしなければならなかったのか?アンパックしなくても実行結果は同じではないのか、
|
20
20
|
|
21
|
-
アンパックしなくても実行結果は同じではないのかって疑問を持つなら、アンパックせずに試してみればいい
|
21
|
+
アンパックしなくても実行結果は同じではないのかって疑問を持つなら、アンパックせずに試してみればいい。
|
22
22
|
```
|
23
23
|
data= (50,100,5)
|
24
24
|
print(list(range(data)))
|