我希望能够将列表分割并返回边界,以便在扩展时不会存在单个元素。
例如:
例如:
split(list(range(1,101)),2)
# should return
[[1,50],[51,100]]
split(list(range(1,101)),3)
# should return
[[1,33],[34,66],[67,100]]
split(list(range(1,6)),3)
# should return
[[1,2],[3,5]] # Ideally last element should merge with last if last one has no pair.
到目前为止,我尝试了以下方法:
def split(l, n):
x = list(range(1, l+1))
return [x[i:i+n] for i in range(0, len(x), int(len(x)/n))]
print(split(20, 2))
该函数返回[[1, 2], [11, 12]]
而不是[[1, 10], [11, 20]]
split(list(range(1,6)),3)
不应该给出三个分割吗,而不是两个? - pylangrange(1,6)
==[1,2,3,4,5]
- 如果分成3个,则得到[[1,2],[3,4],[5,None]]
。结果中不应该有“没有范围”的元素,而是应该将其前面的范围延伸。因此结果为[[1,2],[3,5]]
。 - Patrick Artner