Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将列表拆分为特殊块_Python_List_Iteration - Fatal编程技术网

Python 将列表拆分为特殊块

Python 将列表拆分为特殊块,python,list,iteration,Python,List,Iteration,我有以下问题。我有这样一个清单: >>> l = list(range(20)) >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] >>> # What I want: >>> [[0, 1, 2, 3], [3, 4, 5, 6], [6, 7, 8, 9] , ...] 我怎样才能把我的清单以最具蟒蛇风格的方式分成长

我有以下问题。我有这样一个清单:

>>> l = list(range(20))
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> # What I want:
>>> [[0, 1, 2, 3], [3, 4, 5, 6], [6, 7, 8, 9] , ...]
我怎样才能把我的清单以最具蟒蛇风格的方式分成长度为4的k段?我觉得我错过了一些明显的东西。我完全知道,但仍然没有线索


提前谢谢

您已发布链接的问题答案的直接副本。唯一的变化是xrange中的阶跃-从n到n-1:

zip(*[iter(list(range(20)))]*4)

你能详细谈谈你正在努力解决的问题吗?参考答案提供了一系列非常类似于python的方法来解决这个问题。不,不,不!请注意,每个块的最后一个元素与下一个块的第一个元素相同![l[a:a+4]对于范围为0的a,lenl,3]@NikolaiTschacher好吧,你不是在对列表进行分块,而是在生成一个类似于列表的模式。这两个问题根本不是一回事,不是我想要的。请注意,每个块的最后一个元素与下一个块的第一个元素相同!最后是一个正确阅读问题的人。谢谢你的回答,是的,我本来可以自己找到答案的……谢谢,先生!
a = range(20)
b = [a[i:i+4] for i in xrange(0, len(a), 4)]
print b
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]]
def chunks(l, n):
    for i in xrange(0, len(l), n - 1):
        yield l[i:i + n]


list(chunks(range(20), 4))
[[0, 1, 2, 3], [3, 4, 5, 6], [6, 7, 8, 9], [9, 10, 11, 12], [12, 13, 14, 15], [15, 16, 17, 18], [18, 19]]