- def deal(member, data):
- """
- >>> deal(3, "123123123")
- ['111', '222', '333']
- >>> deal(4, "123123123")
- ['12', '23', '31', '12']
- >>> deal(6, "012345012345012345")
- ['000', '111', '222', '333', '444', '555']
- >>> deal(4, '111122223333')
- ['123', '123', '123', '123']
- >>> deal(1, '012345012345012345')
- ['012345012345012345']
- >>> deal(6, '01234')
- ['', '', '', '', '', '']
- >>> deal(2, '')
- ['', '']
- """
- from itertools import izip, cycle
- a = [''] * member
- for d, m in izip(data[:len(data) - len(data) % member],
- cycle(range(member))):
- a[m] += d
- return a
見ないようにしたのに、似たような回答になってしまった。
本当は初期値を準備せずにうまいことやりたかったんだけど。
たとえばreduceは、どんな理論か知りませんが、適切に初期値を準備してくれますよね。
文字列の += もいやな感じ。
行数を増やさずにjoinにしたい。
ワンライナーがかけるようになりたい。
0 件のコメント:
コメントを投稿