从列表中获取所有连续2元组的Pythonic方法 - python

我有一个句子作为单词列表,我正在尝试从中提取所有的双字母组(即单词的所有连续2个元组)。所以,如果我的句子是

['To', 'sleep', 'perchance', 'to', 'dream']

我想回来

[('To', 'sleep'), ('sleep', 'perchance'), ('perchance', 'to'), ('to', 'dream')]

目前,我正在使用

zip([sentence[i] for i in range(len(sentence) - 1)], [sentence[i+1] for i in range(len(sentence) - 1)]然后进行迭代,但是我不禁想到还有更多的Python方式可以做到这一点。

python大神给出的解决方案

zip使您处在正确的轨道上。我建议使用列表切片而不是理解。

seq = ['To', 'sleep', 'perchance', 'to', 'dream']
print zip(seq, seq[1:])

结果:

[('To', 'sleep'), ('sleep', 'perchance'), ('perchance', 'to'), ('to', 'dream')]

请注意,zip的参数不必具有相同的长度,因此seq长于seq[1:]是可以的。