首页 > 解决方案 > 将列表划分为偏移量为 1 的子列表

问题描述

我有以下列表:

x=["A", "B", "B", "C", "B", "A", "D", "D", "A", "B", "A", "D"]

我想知道如何将一个分区为长度为 2 且偏移量为 1 的子列表,以便获得:

#[["A", "B"], ["B", "B"], ["B", "C"], ["C", "B"], ["B", "A"], ["A", 
# "D"], ["D", "D"], ["D", "A"], ["A", "B"], ["B", "A"], ["A", "D"]]

还有一个通用的方法吗?例如对于不同大小的分区和不同的偏移量?假设我想分区为 3 的子列表,偏移量为 2:我会得到

#[["A", "B", "B"], ["B", "C", "B"], ["B", "A", "D"], ["D", "D", 
# "A"], ["A", "B", "A"]]

是否可以将其编写为函数,因此对于给定的列表,具有给定的分区大小和给定的偏移量,它会找到子列表?

标签: pythonarrayslist

解决方案


您可以在第一个元素之后使用列表的一部分并使用zip

    >>> x=["A", "B", "B", "C", "B", "A", "D", "D", "A", "B", "A", "D"]
    >>> [list(a) for a in zip(x,x[1:])]
    [['A', 'B'], ['B', 'B'], ['B', 'C'], ['C', 'B'], ['B', 'A'], ['A', 'D'], ['D',
    'D'], ['D', 'A'], ['A', 'B'], ['B', 'A'], ['A', 'D']]

推荐阅读