本帖最后由 graceasyi 于 2018-3-28 09:31 编辑
抢个沙发~
- def newlist(n):
- if n:
- lbd = lambda x: sum(range(1, x+1))
- r = [i for i in range(1, n+1) if lbd(i-1) < n]
- t = [i for i in range(1, n+1)]
- return [t[(i*i-i)//2:(i*i-i)//2 + i] for i in r]
- else:
- return []
- for n in range(20):
- print(newlist(n))
复制代码
结果:
[]
[[1]]
[[1], [2]]
[[1], [2, 3]]
[[1], [2, 3], [4]]
[[1], [2, 3], [4, 5]]
[[1], [2, 3], [4, 5, 6]]
[[1], [2, 3], [4, 5, 6], [7]]
[[1], [2, 3], [4, 5, 6], [7, 8]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9, 10]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9, 10], [11]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9, 10], [11, 12]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9, 10], [11, 12, 13]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9, 10], [11, 12, 13, 14]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9, 10], [11, 12, 13, 14, 15]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9, 10], [11, 12, 13, 14, 15], [16]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18]]
[[1], [2, 3], [4, 5, 6], [7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19]]
|