列表的带有zip的ngram

ver*_*sit 4 python sequence

我可以像这样制作一个快速而肮脏的二元组序列:

>>> w = ['a', 'b', 'c', 'd']
>>> zip(w, w[1:])
[('a', 'b'), ('b', 'c'), ('c', 'd')]
Run Code Online (Sandbox Code Playgroud)

我想创建一个接受n-gram的数字参数n的函数.如何获取该参数并自动填写如上所示的zip参数?换句话说,我的功能:

>>> make_ngrams(w, 3)
Run Code Online (Sandbox Code Playgroud)

将创造

>>> zip(w, w[1:], w[2:])
Run Code Online (Sandbox Code Playgroud)

在飞行中,并返回:

[('a', 'b', 'c'), ('b', 'c', 'd')]
Run Code Online (Sandbox Code Playgroud)

明星经营者可以帮助我吗?感谢您的任何见解!

Vol*_*ity 10

def make_ngrams(lst, n):
    return zip(*(lst[i:] for i in xrange(n)))
Run Code Online (Sandbox Code Playgroud)

*操作者基本上采用一个可迭代的所有元素并将它们作为独立参数进功能.