从单词列表创建三元组

2024-05-12 12:43:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

等等。什么是获得这个结果的最好方法?


Tags: the方法列表数组quick单词lazyover
3条回答
b = [a[i:i+3] for i in range(len(a)-2)]

对于可切片序列(如列表),已经给出的答案可以正常工作。对于任何iterable中的单词的一般情况(无论是序列、文件还是其他):

def NbyN(seq, N=3):
  it = iter(seq)
  window = [next(it) for _ in range(N)] 
  while True:
    yield window
    window = window[1:] + [next(it)]
>>> 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']]

相关问题 更多 >