这是几年前我看到的一些实现此目的的代码:
>>> def partitions(n): if n: for subpart in partitions(n-1): yield [1] + subpart if subpart and (len(subpart) < 2 or subpart[1] > subpart[0]): yield [subpart[0] + 1] + subpart[1:] else: yield []>>> print list(partitions(4))[[1, 1, 1, 1], [1, 1, 2], [2, 2], [1, 3], [4]]
其他参考:
- http://mathworld.wolfram.com/Partition.html
- http://en.wikipedia.org/wiki/Partition_(number_theory)
- http://www.site.uottawa.ca/~ivan/F49-int-part.pdf



