回答編集履歴
6
追加投稿したので注釈を追記
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
**追記:** よりシンプルに書けたので別回答で投稿します
|
2
|
+
|
3
|
+
|
4
|
+
|
1
5
|
シンプルに、Bの要素を3回回し、Aを一個ずつ読み出し
|
2
6
|
|
3
7
|
iter()化してnext()で読みだすところがポイント。
|
5
念の為list()追加
test
CHANGED
@@ -66,9 +66,9 @@
|
|
66
66
|
|
67
67
|
|
68
68
|
|
69
|
-
listA = map(list, chunk(2, "ABCDEFGHIJKL"))
|
69
|
+
listA = list(map(list, chunk(2, "ABCDEFGHIJKL")))
|
70
70
|
|
71
|
-
listB = map(list, chunk(2, "あいうえ")) # [["あ", "い"], ["う", "え"]] を生成
|
71
|
+
listB = list(map(list, chunk(2, "あいうえ"))) # [["あ", "い"], ["う", "え"]] を生成
|
72
72
|
|
73
73
|
|
74
74
|
|
@@ -89,3 +89,7 @@
|
|
89
89
|
pprint(listC)
|
90
90
|
|
91
91
|
```
|
92
|
+
|
93
|
+
追記: ※ listをたくさん使ってますが、元のデータに合わせる為にいれただけなので、
|
94
|
+
|
95
|
+
最後以外はなくてもロジック自体は動きます。
|
4
説明補足
test
CHANGED
@@ -42,9 +42,15 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
-
|
45
|
+
説明追記:
|
46
46
|
|
47
|
+
listB の要素に対して、repeatで3回繰り返したリストを作り
|
48
|
+
|
49
|
+
chain.from_iterable で一段階フラットにします。
|
50
|
+
|
51
|
+
[["あ", "い"], ["あ", "い"], ["あ", "い"], ["う", "え"], ["う", "え"], ["う", "え"]]
|
52
|
+
|
47
|
-
zipで掛け合わせます。
|
53
|
+
と、listA と同じ長さのリストになるので、zipで掛け合わせます。
|
48
54
|
|
49
55
|
|
50
56
|
|
3
コード修正: 出力(pprint)忘れ
test
CHANGED
@@ -76,4 +76,10 @@
|
|
76
76
|
|
77
77
|
listC = list(genListC(listA, listB))
|
78
78
|
|
79
|
+
|
80
|
+
|
81
|
+
from pprint import pprint
|
82
|
+
|
83
|
+
pprint(listC)
|
84
|
+
|
79
85
|
```
|
2
コード修正
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
|
40
40
|
|
41
|
-
itertools 使った方法
|
41
|
+
itertools 使った方法(関数プログラミングとか好きな人向け
|
42
42
|
|
43
43
|
|
44
44
|
|
@@ -74,6 +74,6 @@
|
|
74
74
|
|
75
75
|
|
76
76
|
|
77
|
-
listC = list(genListC())
|
77
|
+
listC = list(genListC(listA, listB))
|
78
78
|
|
79
79
|
```
|
1
コード修正
test
CHANGED
@@ -54,8 +54,26 @@
|
|
54
54
|
|
55
55
|
|
56
56
|
|
57
|
-
f
|
57
|
+
def chunk(size, seq):
|
58
58
|
|
59
|
+
return list(zip(*[iter(seq)]*size))
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
listA = map(list, chunk(2, "ABCDEFGHIJKL"))
|
64
|
+
|
65
|
+
listB = map(list, chunk(2, "あいうえ")) # [["あ", "い"], ["う", "え"]] を生成
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
def genListC(listA, listB):
|
70
|
+
|
71
|
+
for a, b in zip(listA, chain.from_iterable(repeat(b,3) for b in listB)):
|
72
|
+
|
59
|
-
|
73
|
+
yield b + a
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
listC = list(genListC())
|
60
78
|
|
61
79
|
```
|