从单词列表创建三元组

时间:2009-10-30 17:59:38

标签: python list

假设我有一个单词列表,如下所示:

['The', 'Quick', 'Brown', 'Fox', 'Jumps', 'Over', 'The', 'Lazy', 'Dog']

我想生成一个列表列表,每个数组包含3个单词,但每个单元都有一个可能的三元组。所以看起来应该是这样的:

['The', 'Quick', 'Brown']
['Quick', 'Brown', 'Fox']
['Brown', 'Fox', 'Jumps']

等等。得到这个结果的最佳方法是什么?

4 个答案:

答案 0 :(得分:7)

>>> words
['The', 'Quick', 'Brown', 'Fox', 'Jumps', 'Over', 'The', 'Lazy', 'Dog']
>>> [words[i:i+3] for i in range(len(words) - 2)]
[['The', 'Quick', 'Brown'], ['Quick', 'Brown', 'Fox'], ['Brown', 'Fox', 'Jumps'], ['Fox', 'Jumps', 'Over'], ['Jumps', 'Over', 'The'], ['Over', 'The', 'Lazy'], ['The', 'Lazy', 'Dog']]

答案 1 :(得分:5)

b = [a[i:i+3] for i in range(len(a)-2)]

答案 2 :(得分:3)

使用可切片序列(例如列表),已经给出的答案可以正常工作。对于任何可迭代的单词(无论是序列,文件,等等)的一般情况:

def NbyN(seq, N=3):
  it = iter(seq)
  window = [next(it) for _ in range(N)] 
  while True:
    yield window
    window = window[1:] + [next(it)]

答案 3 :(得分:-1)

我不知道你为什么要这么做或需要完成多少次,我只想说它。