在 Python 中创建具有列表理解的嵌套列表
Creating a nested list with list comprehension in Python
基本上,我想对列表中的项目进行分组。例如:
- 对于
[1, 2, 3, 4, 5, 6]
,我想要[[1, 2, 3], [4, 5, 6]]
- 对于
[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的方法。
基本上,我想对列表中的项目进行分组。例如:
- 对于
[1, 2, 3, 4, 5, 6]
,我想要[[1, 2, 3], [4, 5, 6]]
- 对于
[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的方法。