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

回答編集履歴

2

大きなデータでも行けるようにfor文をひとつ`yield from`で置き換えました。

2018/01/31 05:22

投稿

YouheiSakurai
YouheiSakurai

スコア6151

answer CHANGED
@@ -6,8 +6,7 @@
6
6
  yield "ID", "var", "num"
7
7
  for row in DictReader(fp, **kwargs):
8
8
  ID = row.pop("ID")
9
- for key in row:
10
- yield ID, key, row[key]
9
+ yield from ((ID, key, row[key]) for key in row)
11
10
 
12
11
 
13
12
  with open("sample.csv") as fp:
@@ -15,4 +14,6 @@
15
14
  print(*row, sep=",")
16
15
  ```
17
16
 
18
- `yield`を上手く使えば何万行あっても大丈夫です。変数も数千くらいなら全然問題にはならないと思います。
17
+ `yield`を上手く使えば何万行あっても大丈夫です。変数も数千くらいなら全然問題にはならないと思います。
18
+
19
+ ※追記:大きなデータでも行けるようにfor文をひとつ`yield from`で置き換えました。

1

説明追加

2018/01/31 05:22

投稿

YouheiSakurai
YouheiSakurai

スコア6151

answer CHANGED
@@ -13,4 +13,6 @@
13
13
  with open("sample.csv") as fp:
14
14
  for row in TransReader(fp):
15
15
  print(*row, sep=",")
16
- ```
16
+ ```
17
+
18
+ `yield`を上手く使えば何万行あっても大丈夫です。変数も数千くらいなら全然問題にはならないと思います。