在Python中使用列表推导创建嵌套列表

时间:2016-09-25 02:54:36

标签: python list for-loop list-comprehension nested-lists

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

  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]]
  3. 我知道如何取消嵌套列表,但我不知道如何创建嵌套列表。

2 个答案:

答案 0 :(得分:2)

您可以将列表理解与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

答案 1 :(得分:1)

我认为你可以这样做:

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

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