gpt4 book ai didi

python - 迭代每个 N 元素,放入一个元素(元组),然后每个 N 元素,放入另一个元素(元组)

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:45 30 4
gpt4 key购买 nike

如何遍历列表的每 5 个元素并将它们组成一个元组,然后将同一列表的第 6 个元素作为第二个元组 - 然后对接下来的 5 个元素和第 6 个元素执行相同的操作。

我读过

operator.itemgetter(*items)

我也读过

arrays

我在想类似的东西:

first_N_element=[generator.next() for i in range(N)]

但这不能只取下一个元素并重复完全相同的操作。

例如,如果您有:

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

我们如何组成这样的新列表:

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

最佳答案

你可以写一个生成器。请注意,这不会处理任何边缘情况,并假设您的数据表现良好:

>>> def my_gen(sequence):
... it = iter(sequence)
... while True:
... yield [next(it) for _ in range(6)]
... yield [next(it)]
...
>>> l = range(1, 7*4 +1)
>>> list(my_gen(l))
[[1, 2, 3, 4, 5, 6], [7], [8, 9, 10, 11, 12, 13], [14], [15, 16, 17, 18, 19, 20], [21], [22, 23, 24, 25, 26, 27], [28]]
>>>

您可以对此进行改进以满足您的需求。例如,使用 from itertools import slice 可以处理“不均匀”列表 - 不是 7 的倍数的列表,返回尾随位,如下所示:

>>> def my_gen(sequence):
... it = iter(sequence)
... while True:
... six = list(islice(it, 6))
... if six:
... yield six
... yield [next(it)]
...
>>> l = range(1, 7*4 -3)
>>> list(my_gen(l))
[[1, 2, 3, 4, 5, 6], [7], [8, 9, 10, 11, 12, 13], [14], [15, 16, 17, 18, 19, 20], [21], [22, 23, 24]]
>>>

关于python - 迭代每个 N 元素,放入一个元素(元组),然后每个 N 元素,放入另一个元素(元组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41557968/

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