如何将列表分成大小相等的块,如果列表是奇数,我想将块添加到前一个块中

时间:2019-04-22 14:14:32

标签: python list function

如果数据集包含n = 385,现在我想拆分,以便每个块都包含95,95,95,95,5之类的点。现在,我想将最后5个点添加到上一个块

我正在使用jupyter笔记本

def chunks(l, n):
   return [l[i:i+n] for i in range(0, len(l), n)]

slice =chunks(dataframe, int(len(dataframe)/4))

我希望输出的大小相等

3 个答案:

答案 0 :(得分:0)

def chunks (l, n):
  r = [l]
  while len (r [-1]) >= 2 * n:
    r [-1:] = [r [-1][:n], r [-1][n:]]
  return r

答案 1 :(得分:0)

您可以添加一个条件,如果最后一个块的长度不理想,该函数会将其添加到前一个块中,并仅返回直到该索引为止。例如:

def chunks(l, n):
  foo = [l[i:i+n] for i in range(0, len(l), n)]
  if len(foo[-1]) != n:
    foo[-2]+= foo[-1]
    return foo[:-1]
  else:
    return foo


l = [i for i in range(100)]

chunks = chunks(l, 6)
print(chunks)

输出:

[[0, 1, 2, 3, 4, 5], 
 [6, 7, 8, 9, 10, 11],
...
 [84, 85, 86, 87, 88, 89], 
 [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]

答案 2 :(得分:0)

仅当最后一个子列表的大小不为n(块大小)时,才可以通过添加最后一个子列表,然后删除最后一个子列表来更新现有代码中列表的倒数第二个子列表

myBtnIdClicked

输出将为

def chunks(l, n):
   li = [l[i:i+n] for i in range(0, len(l), n)]
   #Add the second last sublist to the last sublist
   #Only if the last sublist is not of size n
   if len(li[-1]) != n:
        li[-2] += li[-1]
        #Remove the last element
        li.pop(-1)
   return li