やりたいこと
["a", "b", ... ,"z"]
↑の様なリストがある時、aからe、fからjのように5文字ごとに分割したい。また、最後に余るzに関しても、リストに含めたい。
つまり、
["aからe", "fからj", ..., "z"]
のようなサブリストに分割したいと考えています。
方法
文字列をすべてキューに入れ、5個ごとに取り出します。また、空でないキューのみを取り出すことで、最後に余った要素以降は無視します。
コード
split.py
import queue
# aからzの文字リストを作成
chars = [chr(ord('a') + i) for i in range(26)]
# キューを作成
q = queue.Queue()
# キューに文字リストを挿入
for s in chars:
q.put(s)
# 分割した文字を格納する用のリスト
subList = []
# 文字リストを分割
while not q.empty():
#分割したリストを一時保存
splittedList = []
#5個ごとに区切る
for i in range(5):
if not q.empty():
splittedList.append(q.get())
#サブリストに格納
subList.append(splittedList)
# 出力
print(subList)
結果
>python split.py
[['a', 'b', 'c', 'd', 'e'], ['f', 'g', 'h', 'i', 'j'], ['k', 'l', 'm', 'n', 'o'], ['p', 'q', 'r', 's', 't'], ['u', 'v', 'w', 'x', 'y'], ['z']]
追記(2020/03/31)
@shiracamusさんからコメントを頂きました。
ありがとうございました。