我有一个句子作为单词列表,我正在尝试从中提取所有的双字母组(即单词的所有连续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:]
是可以的。