【发布时间】:2026-01-13 13:50:01
【问题描述】:
我想要一个函数,根据这个方案将我的列表分成一个子列表,然后将这些子列表分成更多的子列表。嵌套数和块大小会有所不同。请注意lst2中的[4]和[9],这是必不可少的。
block_sizes = [5, 2, 1]
my_lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
# desired return
lst1 = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11]] # chunked into sublists of size 5
lst2 = [[0, 1], [2, 3], [4], [5, 6], [7, 8], [9], [10, 11]] # chunked into sublists of size 2; be aware of [4] and [9]
lst3 = [[0], [1], [2], [3], [4], [5], ... [11]]
我已经尝试过了,但是分块没有按预期工作:
block_sizes = [5, 2, 1]
def chunk_into_list(lst, chunk_size):
return [lst[i:i + chunk_size] for i in range(0, len(lst), chunk_size)]
for i, block_size in enumerate(block_sizes):
for step in range(len(block_sizes[:(i + 1)])):
my_lst = chunk_in_sizes(my_lst, block_sizes[step])
print(my_lst)
但这会导致:
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11]]
[[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]], [[10, 11]]]
[[[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]], [[[10, 11]]]]
我将使用它进行模拟,所以如果可能的话,效率很重要。
【问题讨论】:
-
顺便说一句,不要使用列表作为变量名。
-
我知道了,谢谢。只是为了提出我的问题。
-
如果您意识到这一点,请不要将这个错误传播给未来数百万的程序员。
-
你说的有道理,我更正了。
标签: python arrays recursion nested-loops