在 Python 中创建具有列表理解的嵌套列表

Creating a nested list with list comprehension in Python

基本上,我想对列表中的项目进行分组。例如:

  1. 对于[1, 2, 3, 4, 5, 6],我想要[[1, 2, 3], [4, 5, 6]]
  2. 对于[1, 2, 3, 4, 5, 6, 7],我想要[[1, 2, 3], [4, 5, 6], [7]]

我知道如何取消嵌套列表,但不知道如何创建嵌套列表。

您可以将列表理解与 range 一起使用并输出 3 的切片:

>>> l = [1, 2, 3, 4, 5, 6, 7]
>>> [l[i:i+3] for i in range(0, len(l), 3)]
[[1, 2, 3], [4, 5, 6], [7]]

>>> l = [1, 2, 3, 4, 5, 6]
>>> [l[i:i+3] for i in range(0, len(l), 3)]
[[1, 2, 3], [4, 5, 6]]

Range 接受三个参数,第一个是范围的开始,第二个是结束,第三个是步长。如果您使用的是 Python 2,请改用 xrange

我觉得你可以这样做:

target = [1, 2, 3, 4, 5, 6, 7]
n = 3
print([target[i:i+n] for i in range(0, len(target), n)])

您可以通过更改 n 来更改子列表的大小。但是在上面的代码中,我使用了两次target,希望能找到使用一次target的方法。