Skip to main content
 首页 » 编程设计

python生成带有偏移量和条件的子列表

2025年05月04日8linjiqin

嘿,我正在尝试生成列表的子列表。例如,我有一个这样的列表:
l = [1,2,3,4,5,6,7,8,9,10,11,12]

我想将它们拆分为长度为 4 的子列表。但是第一个元素与前一个列表中的最后一个元素相同并且就像我说的那样它的长度必须为 4。像这样:

l1 = [1,2,3,4] 
l2 = [4,5,6,7] 
l3 = [7,8,9,10]  
l4 = [10, 11, 12] <-- should be ignored 

有人有想法吗?!我在考虑发电机,但不太确定。

请您参考如下方法:

一个简单但灵活的生成器实现:

def overlapping_sublists(l, n, overlap=1, start=0):           
    while start <= len(l) - n: 
        yield l[start:start+n] 
        start += n - overlap 

示例用法:

>>> l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 
>>> list(overlapping_sublists(l, 4)) 
[[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]] 
>>> list(overlapping_sublists(l, 4, 2, 3)) 
[[4, 5, 6, 7], [6, 7, 8, 9], [8, 9, 10, 11]]