在下一次迭代中迭代最后一个元素作为第一个重复

Rad*_*vić 3 python iteration nested list

我有一些对象的列表如下:

oldList=[a,b,c,d,e,f,g,h,i,j,...]
Run Code Online (Sandbox Code Playgroud)

我需要的是创建一个包含嵌套列表项的新列表,如下所示:

newList=[[a,b,c,d],[d,e,f,g],[g,h,i,j]...]
Run Code Online (Sandbox Code Playgroud)

或简单说出 - 来自先前嵌套的最后一个元素是下一个新嵌套列表中的第一个元素.

Bha*_*Rao 5

其中一种方法是

>>> l = ['a','b','c','d','e','f','g','h','i','j']
>>> [l[i:i+4] for i in range(0,len(l),3)]
[['a', 'b', 'c', 'd'], ['d', 'e', 'f', 'g'], ['g', 'h', 'i', 'j'], ['j']]
Run Code Online (Sandbox Code Playgroud)

这里 :

  • l[i:i+4] 意味着我们从位置开始打印一个4个值的块 i
  • range(0,len(l),3) 意味着我们通过三次跳跃来遍历列表的长度

所以基本的工作是,我们从列表中获取了3个元素,但我们正在修改切片长度,以便它包含一个额外的元素.通过这种方式,我们可以得到4个元素的列表.

小记 -初始化oldList=[a,b,c,d,e,f,g,h,i,j,...]是无效的,除非a,b,c,d,等前面已经定义了.你可能正在寻找oldList = ['a','b','c','d','e','f','g','h','i','j']

另外,如果你想这将分裂成一个解决方案,甚至大小的块而已,那么你可以试试这个代码: -

>>> [l[i:i+4] for i in range(0,len(l)-len(l)%4,3)]
[['a', 'b', 'c', 'd'], ['d', 'e', 'f', 'g'], ['g', 'h', 'i', 'j']]
Run Code Online (Sandbox Code Playgroud)