我想获取项目列表的每 4 个 block ,其中第一个项目的索引对应于 4-1,所以是上一步。我只能获取每 4 个 block ,但我坚持让列表中的每个项目从“上一步”或 4-1 开始。
我应该以不同的方式循环它吗?
当前代码:
l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']
four_chunks = [l[x:x+4] for x in range(0, len(l), 4)]
##output of four_chunks:
[['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l']]
所需输出:
[['a', 'b', 'c', 'd'], ['d', 'e', 'f', 'g'], ['g', 'h', 'i', 'j']]
正如您在所需的输出中看到的,每个 block 都以结束前一个 block 的项目开始。例如。项目 [1] 以“d”而不是“e”开头。
最佳答案
正如Veedrac和guorui所说,您需要选择3作为range
的step
参数。
four_chunks = [l[x:x+4] for x in range(0, len(l), 3)]
# or
four_chunks = [l[x:x+4] for x in range(0, len(l) - 3, 3)]
有什么区别?如果您的列表无法分割为相等的 block (因此 len(l) % 3 != 1
),后者将剪切最后一个 block ,前者将具有大小 < 4
关于python - 如何在Python中获取列表中的第n block 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71869758/