Python在移动窗口中分割字符串

发布于 2021-01-29 18:23:42

我有一个数字这样的字符串- digit = "7316717"

现在,我想以这样的方式拆分字符串,即输出一次是3位数字的移动窗口。所以我得到-

["731", "316", "167", "671", "717"]

方法如何?简单的方法是放入for循环并进行迭代。但是我觉得一些内置的python字符串函数可以用更少的代码来做到这一点。知道这种方法吗?

关注者
0
被浏览
152
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    itertools例子提供了window,不只是该函数:

    from itertools import islice
    def window(seq, n=2):
        "Returns a sliding window (of width n) over data from the iterable"
        "   s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...                   "
        it = iter(seq)
        result = tuple(islice(it, n))
        if len(result) == n:
            yield result    
        for elem in it:
            result = result[1:] + (elem,)
            yield result
    

    用法示例:

    >>> ["".join(x) for x in window("7316717", 3)]
    ['731', '316', '167', '671', '717']
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看