擅长:python、mysql、java
<p>你应该很清楚,用匹配的长度来划分列表是不可能的。但还有另一种方法:</p>
<pre><code>def do_split(x, percent):
L = len(x)
idx1 = [0] + list(int(L * p) for p in percent[:-1])
idx2 = idx1[1:] + [L]
return list(x[i1:i2] for i1,i2 in zip(idx1, idx2))
splits = [0.2, 0.4, 0.8, 1.0]
print do_split(["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"], splits)
# -> [['one', 'two'], ['three', 'four'], ['five', 'six', 'seven', 'eight'], ['nine', 'ten']]
print do_split( ["one", "two", "three", "four", "five", "six", "seven"], splits)
# > [['one'], ['two'], ['three', 'four', 'five'], ['six', 'seven']]
</code></pre>