gpt4 book ai didi

python - 以对数方式拆分 Python 列表

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:05 24 4
gpt4 key购买 nike

我正在尝试执行以下操作..

我有一个包含 n 个元素的列表。我想将这个列表分成 32 个单独的列表,随着我们接近原始列表的末尾,这些列表包含越来越多的元素。例如来自:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

我想得到这样的东西:

b = [[1],[2,3],[4,5,6,7],[8,9,10,11,12]]

我已经为包含 1024 个元素的列表完成了以下操作:

for i in range (0, 32):
c = a[i**2:(i+1)**2]
b.append(c)

但我正在愚蠢地努力寻找一种可靠的方法来为其他数字(如 256、512、2048)或其他数字而不是 32 的列表执行此操作。

最佳答案

使用 iteratorfor 循环与 enumerateitertools.islice:

import itertools
def logsplit(lst):
iterator = iter(lst)
for n, e in enumerate(iterator):
yield itertools.chain([e], itertools.islice(iterator, n))

适用于任意数量的元素。示例:

for r in logsplit(range(50)):
print(list(r))

输出:

[0]
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]
... some more ...
[36, 37, 38, 39, 40, 41, 42, 43, 44]
[45, 46, 47, 48, 49]

其实这和this problem很像, 除了它使用 enumerate 来获取可变 block 大小。

关于python - 以对数方式拆分 Python 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35755608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com