回答編集履歴

4

d

2019/03/18 02:42

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- enumerate オブジェクトは iterator であり、__next__() が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトの要素を添え字付きで1つずつ返すようになっています。
39
+ enumerate オブジェクトは iterator であり、`__next__()` が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトの要素を添え字付きで1つずつ返すようになっています。
40
40
 
41
41
  添字操作をする場合は「list() でリストにする」など添字操作が行えるオブジェクトに変換する必要があります。
42
42
 

3

g

2019/03/18 02:42

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- enumerate オブジェクトは iterable であり、`__iter__()` が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトを添え字付きで1つずつ返すようになっています。
39
+ enumerate オブジェクトは iterator であり、__next__() が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトの要素を添え字付きで1つずつ返すようになっています。
40
40
 
41
41
  添字操作をする場合は「list() でリストにする」など添字操作が行えるオブジェクトに変換する必要があります。
42
42
 

2

d

2019/03/18 02:41

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -1,3 +1,19 @@
1
+ > 1.エラーの意味は「添え字にアクセスできないオブジェクトです」ですか?
2
+
3
+ その認識であっています。
4
+
5
+
6
+
7
+ > 2.list()があるとエラーが出ないようになる理屈を教えてください
8
+
9
+ 添字でアクセスできるオブジェクトに変換したため。
10
+
11
+
12
+
13
+ ----
14
+
15
+
16
+
1
17
  [組み込み関数 — Python 3.7.3rc1 ドキュメント](https://docs.python.org/ja/3/library/functions.html#enumerate)
2
18
 
3
19
 
@@ -59,3 +75,9 @@
59
75
  print(list(enum)) # [(0, 1), (1, 2), (2, 3), (3, 4)]
60
76
 
61
77
  ```
78
+
79
+ > 3.そもそも[:max_length]は不要な気がするのですが、なぜあるのでしょうか
80
+
81
+
82
+
83
+ コメントの `We will only consider the first `max_length` words in each sample.` とあるように文章は長さがまちまちなので、各要素が単語である文章を表すリストから最大で max_length 要素だけ取り出すということですね。

1

2019/03/17 14:37

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -6,15 +6,23 @@
6
6
 
7
7
 
8
8
 
9
- 以下を見ればわかると思いますが、enumerate() の返り値は enumerate オブジェクトであって、リストではないので、添字操作はできません。(subscribtable でない)
9
+ enumerate() の返り値は enumerate オブジェクトであって、添字操作はサポートされていません。(subscribtableでない)
10
-
11
- enumerate オブジェクトは iterable であり、__iter__() が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトを添え字付きで1つずつ返すというものです。
12
10
 
13
11
 
14
12
 
13
+ 以下の例では、enumerate() の返り値 enum は [(0, 1), (1, 2), (2, 3), (3, 4)] のようなリストであると思って添字操作を行ったのだと思いますが、enum[:2] のように添字操作は行なえません。
14
+
15
+ ```
16
+
17
+ enum = enumerate([1, 2, 3, 4])
18
+
19
+ ```
15
20
 
16
21
 
22
+
23
+ enumerate オブジェクトは iterable であり、`__iter__()` が呼ばれると、インスタンス化したときに渡した iterable なオブジェクトを添え字付きで1つずつ返すようになっています。
24
+
17
- 添字操作をする場合は list() などでリストに変換する必要があります。
25
+ 添字操作をする場合はlist() でリストにする」など添字操作が行えるオブジェクトに変換する必要があります。
18
26
 
19
27
 
20
28