回答編集履歴
4
d
answer
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
enum = enumerate([1, 2, 3, 4])
|
18
18
|
```
|
19
19
|
|
20
|
-
enumerate オブジェクトは iterator であり、__next__() が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトの要素を添え字付きで1つずつ返すようになっています。
|
20
|
+
enumerate オブジェクトは iterator であり、`__next__()` が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトの要素を添え字付きで1つずつ返すようになっています。
|
21
21
|
添字操作をする場合は「list() でリストにする」など添字操作が行えるオブジェクトに変換する必要があります。
|
22
22
|
|
23
23
|
```python
|
3
g
answer
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
enum = enumerate([1, 2, 3, 4])
|
18
18
|
```
|
19
19
|
|
20
|
-
enumerate オブジェクトは
|
20
|
+
enumerate オブジェクトは iterator であり、__next__() が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトの要素を添え字付きで1つずつ返すようになっています。
|
21
21
|
添字操作をする場合は「list() でリストにする」など添字操作が行えるオブジェクトに変換する必要があります。
|
22
22
|
|
23
23
|
```python
|
2
d
answer
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
> 1.エラーの意味は「添え字にアクセスできないオブジェクトです」ですか?
|
2
|
+
その認識であっています。
|
3
|
+
|
4
|
+
> 2.list()があるとエラーが出ないようになる理屈を教えてください
|
5
|
+
添字でアクセスできるオブジェクトに変換したため。
|
6
|
+
|
7
|
+
----
|
8
|
+
|
1
9
|
[組み込み関数 — Python 3.7.3rc1 ドキュメント](https://docs.python.org/ja/3/library/functions.html#enumerate)
|
2
10
|
|
3
11
|
> enumerate オブジェクトを返します。 iterable は、シーケンスか iterator か、あるいはイテレーションをサポートするその他のオブジェクトでなければなりません。 enumerate() によって返されたイテレータの __next__() メソッドは、 (デフォルトでは 0 となる start からの) カウントと、 iterable 上のイテレーションによって得られた値を含むタプルを返します。
|
@@ -28,4 +36,7 @@
|
|
28
36
|
|
29
37
|
# (3) enumerate オブジェクトからリストを作成する。
|
30
38
|
print(list(enum)) # [(0, 1), (1, 2), (2, 3), (3, 4)]
|
31
|
-
```
|
39
|
+
```
|
40
|
+
> 3.そもそも[:max_length]は不要な気がするのですが、なぜあるのでしょうか
|
41
|
+
|
42
|
+
コメントの `We will only consider the first `max_length` words in each sample.` とあるように文章は長さがまちまちなので、各要素が単語である文章を表すリストから最大で max_length 要素だけ取り出すということですね。
|
1
え
answer
CHANGED
@@ -2,11 +2,15 @@
|
|
2
2
|
|
3
3
|
> enumerate オブジェクトを返します。 iterable は、シーケンスか iterator か、あるいはイテレーションをサポートするその他のオブジェクトでなければなりません。 enumerate() によって返されたイテレータの __next__() メソッドは、 (デフォルトでは 0 となる start からの) カウントと、 iterable 上のイテレーションによって得られた値を含むタプルを返します。
|
4
4
|
|
5
|
-
|
5
|
+
enumerate() の返り値は enumerate オブジェクトであって、添字操作はサポートされていません。(subscribtableでない)
|
6
|
-
enumerate オブジェクトは iterable であり、__iter__() が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトを添え字付きで1つずつ返すというものです。
|
7
6
|
|
7
|
+
以下の例では、enumerate() の返り値 enum は [(0, 1), (1, 2), (2, 3), (3, 4)] のようなリストであると思って添字操作を行ったのだと思いますが、enum[:2] のように添字操作は行なえません。
|
8
|
+
```
|
9
|
+
enum = enumerate([1, 2, 3, 4])
|
10
|
+
```
|
8
11
|
|
12
|
+
enumerate オブジェクトは iterable であり、`__iter__()` が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトを添え字付きで1つずつ返すようになっています。
|
9
|
-
添字操作をする場合は
|
13
|
+
添字操作をする場合は「list() でリストにする」など添字操作が行えるオブジェクトに変換する必要があります。
|
10
14
|
|
11
15
|
```python
|
12
16
|
from collections.abc import Iterable
|