从单词列表中创建三元组
假设我有一个单词列表,像这样:
['The', 'Quick', 'Brown', 'Fox', 'Jumps', 'Over', 'The', 'Lazy', 'Dog']
我想生成一个列表的列表,每个小数组里包含3个单词,但每个单词都有可能组成一个三元组。所以结果应该像这样:
['The', 'Quick', 'Brown']
['Quick', 'Brown', 'Fox']
['Brown', 'Fox', 'Jumps']
以此类推。那么,得到这个结果的最好方法是什么呢?
4 个回答
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)]
5
这段代码是用来做某些操作的,但具体的功能可能需要根据上下文来理解。一般来说,代码块里的内容可能涉及到变量、函数或者其他编程元素。对于初学者来说,理解这些代码的每一部分是很重要的。
如果你看到类似于
b = [a[i:i+3] for i in range(len(a)-2)]
这样的占位符,通常它代表着某段代码的具体内容,可能是一个示例或者是某个功能的实现。你可以把它想象成一个空白的框,里面应该填充具体的代码。
总之,理解代码的结构和功能是学习编程的关键,慢慢来,逐步掌握每个部分,你会越来越熟悉这些内容的。
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']]