Skip to content

Instantly share code, notes, and snippets.

@kwatch
Created August 11, 2014 10:54
Show Gist options
  • Save kwatch/3db7d2f09d274e5b78e8 to your computer and use it in GitHub Desktop.
Save kwatch/3db7d2f09d274e5b78e8 to your computer and use it in GitHub Desktop.
問題1: シーケンスを受け取り、N個ずつの配列にして返すような関数 each_slice(seq, n, default=None) を定義してください。
"""
問題1: シーケンスを受け取り、N個ずつの配列にして返すような関数 each_slice(seq, n, default=None) を定義してください。
例:
seq = [10, 20, 30, 40, 50, 60, 70]
for item in each_slice(seq, 3):
print(item)
## 結果:
[10, 20, 30]
[40, 50, 60]
[70, None, None]
"""
def each_slice(iterable, n, default=None):
"""yields each n items in iterable."""
#; [!6ra4k] yield each n items in iterable.
slice = []
for x in iterable:
slice.append(x)
if len(slice) == n:
yield slice
slice = []
#; [!dyv9o] when number of items is not multiply of n...
if slice:
#; [!bcbca] appends default value.
for _ in range(n - len(slice)):
slice.append(default)
#; [!hfbjf] yields rest of items.
yield slice
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment