Python将列表拆分为重复的块

我知道可以这样做:

test_list = ['1','2','3','4','5','6','7','8','9','10']

x = 3

final_list= lambda test_list, x: [test_list[i:i+x] for i in range(0, len(test_list), x)]

output=final_list(test_list, x)
output is: [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]

但我有一些不同的要求。我应该返回这个:

output is: [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['8','9', '10']]

换句话说,我应该允许在最后一个块中重复数字。有没有简单的方法来做到这一点?

回答

lambda test_list, x: [test_list[min(i,len(test_list)-x):min(i+x,len(test_list))] for i in range(0, len(test_list), x)]

不过,预先计算 len(test_list) 可能会更有效

差不多:你说你希望最后一个元素不是剩余的元素,而是最后的 x 个元素(对吗?),所以这意味着如果剩余的元素少于 x 个(即我们的索引 i 大于或等于到长度-x),我们不想使用i作为起始索引,我们想使用长度-x。

顺便说一句,我使用的第二分钟(用于结束索引)并不是绝对必要的,只是为了清洁。


以上是Python将列表拆分为重复的块的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>