python - 如何在Python中获取列表中的第n block 项目?

标签 python python-3.x list loops

我想获取项目列表的每 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作为rangestep参数。

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

的最后一个 block

关于python - 如何在Python中获取列表中的第n block 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71869758/

相关文章:

python - 如何在网页抓取时继续循环

python - 如何检查记录器是否存在

Python:计算列表中的频率并对齐结果

python - 检查列表中字符串内的字符串

python - unix shell 脚本中的子进程性能不佳

java - 为什么 Jython 在使用 PyStone 进行测试时表现不一致?

python-3.x - asyncio 以不同的间隔定期运行两个不同的函数

Python3如何安装.ttf字体文件?

python - 在 Pandas 查询中使用列表

Python Flask-Mysql KeyError : 'MYSQL_HOST'