让我说我有这个清单:
bootstrap.servers=windowsIP:9092,windowsIP:9093
,我有代表列表长度的数字k。 我想得到的是拆分列表,列表列表的长度是k的平方, 所以这就是我需要得到的:
all list is: [512, 512, 2048, 512, 2048, 2048, 2048, 512, 256]
之后,我想对所有子列表进行排序
[[512, 512, 2048], [512, 2048, 2048],[2048, 512, 256]]
什么是最好的方法?
答案 0 :(得分:0)
我首先要提到的是您要的二维数组的长度等于k * k,但是在您的示例中,二维数组的长度为3,它的平方根不干净。话虽如此,要实现上述目标,您可以执行以下操作:
def chunk(iterable, k):
n = k**2
for i in range(0, len(iterable), n):
yield iterable[i:i + n]
values = [512, 512, 2048, 512, 2048, 2048, 2048, 512]
k = 2
chunked = []
for piece in chunk(values, k):
chunked.append(piece)
print(chunked)
>>> [[512, 512, 2048, 512], [2048, 2048, 2048, 512]]
我不能说这是“最好的方法”,但这是实现目标的一种方法。
编辑来自OP的评论
目标是使较小的列表等于k的平方根长度,而不是平方。
import math
def chunk(iterable, k):
for i in range(0, len(iterable), math.ceil(math.sqrt(k))):
yield sorted(iterable[i:i + math.ceil(math.sqrt(k))])