python - 以倒计时间隔跳过Python中的迭代

标签 python list iteration skip

我有一个列表 (fullList) [5, 8, 9, 10, 5, 9, 10, 11, 8, 9, 13, 14, 9, 10, 13, 15, 10, 11, 14, 15 ] 和值 n, - 我想迭代前 (n) 4 个值,然后跳过 1 个数字,然后迭代下一个 4-1 个值,并跳过 2 个数字,然后迭代接下来的 4-2 个数字并跳过 3 个数字等...直到列表完全迭代。

我的最终答案应该是这样的:

[5,8,9,10,9,10,11,13,14,15]

可以通过取前 4 个值 (5,8,9,10),然后跳过 1 个计数 (5),然后取接下来的 3 个值 (9,10,11) 并跳过 2 个计数 (8) 来获得,9),然后取接下来的 2 个值 (13,14) 并跳过 3 个计数 (9,10,13),取下一个值 (15) 并跳过 4 个计数 (10,11,14,15)

--

编辑:我通过迭代较小列表 (listb) [2,3,6,7,8] 的值并通过将其与自身相加来获得 fullList。我已经解决了这一部分,但仍然想了解第一部分(上面)。

我希望达到以下结果:

2+3 = 5
2+6 = 8
2+7 = 9
2+8 = 10
3+6 = 9
3+7 = 10
3+8 = 11
6+7 = 13
6+8 = 14
7+8 = 15

谢谢!

最佳答案

您可以使用itertools.chain

from itertools import chain
x = [5, 8, 9, 10, 5, 9, 10, 11, 8, 9, 13, 14, 9, 10, 13, 15, 10, 11, 14, 15]
x = list(chain.from_iterable(x[4*idx + idx:4*idx + 4] for idx in range(4)))

对于第二部分,请使用 itertools.combinations

from itertools import combinations
x = [2,3,6,7,8]
for combo in combinations(x, 2):
    a, b = combo
    print(f"{a} + {b} = {sum(combo)}")

关于python - 以倒计时间隔跳过Python中的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68232539/

相关文章:

python - 对嵌套函数运行单元测试

python - 通过从另一个 View 调用它来从一个 View 获取 json

javax.el.E​​LException : java. java.util.AbstractList.add 处的 lang.UnsupportedOperationException

python - 使用循环中的新项目将列表与另一个列表进行标识

python - 如何使用缓冲区迭代字符串(python)

python - 如何确保报告管道中的错误

python - 从列表中提取 raw_input 选项

c++ - 如何在 C++ 中迭代非常量变量?

.net - 控制迭代循环内的递归

python - axvline 和 axhline 在多个子图的循环中