如果我有:
def all=[11,12,12,13,13,13,14,15,16,10]
我想将此列表拆分为3个具有几乎相同大小的子列表。
def result=[[11,12,12],[13,13,13],[14,15,16,10]]
我向List类的metaClass添加一个方法:它是percent
metod:
请参阅:https://stackoverflow.com/a/20005844/747579
所以我能做到:
def result=[all.percent(0,0.33),all.percent(0.34,0.66),all.percent(0.67,1)]
我的问题是:有一种方法可以将列表拆分为n个子列表equisize,例如;
def result=all.equisize(n) // n is the number of sublist wanted
答案 0 :(得分:8)
你可以尝试:
def result = all.collate( all.size().intdiv( 3 ) )
给出了:
assert result == [ [ 11, 12, 12 ], [ 13, 13, 13 ], [ 14, 15, 16 ], [ 10 ] ]
如果您不希望将备用[10]
保留在最后,则可以将false
传递给keepRemainder
的{{1}}参数:
collate