如何将Python列表分成不等长的子列表?

2024-05-01

我试图将用逗号分隔的元素列表划分为长度不等的块。我该如何划分它?

list1 = [1, 2, 1]
list2 = ["1.1.1.1", "1.1.1.2", "1.1.1.3", "1.1.1.4"]

list1 包含的元素是我希望将 list2 分成的块的大小。


你可以结合以下的力量itertools.accumulate https://docs.python.org/3/library/itertools.html#itertools.accumulate并列出理解:

In [4]: from itertools import accumulate

In [5]: data = ["1.1.1.1", "1.1.1.2", "1.1.1.3", "1.1.1.4"]

In [6]: lengths = [1, 2, 1]

In [7]: [data[end - length:end] for length, end in zip(lengths, accumulate(lengths))]
Out[7]: [['1.1.1.1'], ['1.1.1.2', '1.1.1.3'], ['1.1.1.4']]

itertools.accumulate返回一个迭代器,指向累加和的序列。这样您就可以轻松计算源数组中每个块的结尾:

In [8]: list(accumulate(lengths))
Out[8]: [1, 3, 4]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将Python列表分成不等长的子列表? 的相关文章

随机推荐