我们应该知道,我们常用的有三种序列。他们分别是:字符串、链表、还有一种为元组。
>>>t ='walk', 'fem', 3 >>>t ('walk', 'fem', 3) >>>t[0] 'walk' >>>t[1:] ('fem', 3) >>len(t)
序列类型上的操作
遍历操作:
zip函数
>>>words= ['I', 'turned', 'off', 'the', 'spectroroute'] >>>tags = ['noun', 'verb', 'prep', 'det', 'noun'] >>>zip(words, tags) [('I', 'noun'), ('turned', 'verb'), ('off', 'prep'), ('the', 'det'), ('spectroroute', 'noun')] >>>list(enumerate(words)) [(0, 'I'), (1, 'turned'), (2, 'off'), (3, 'the'), (4, 'spectroroute')]
合成不同类型的序列
>>>words= 'I turned offthe spectroroute'.split() >>>wordlens= [(len(word), word)for wordin words] 137 >>>wordlens.sort() >>>' '.join(w for (_, w)in wordlens)④ 'I offthe turned spectroroute'
产生器表达式
>>>max([w.lower()for win nltk.word_tokenize(text)]) 'word' >>>max(w.lower()for win nltk.word_tokenize(text)) 'word
注意观察这两种,虽然结果和作用是一样的。但是还是有所不同:
1、在第一个方法当中,链表对象的存储空间必须在max()的值被计算之前分配。如果文本非常大大,这将会非常慢。
2、第二个方法中,数据流像调用它的函数。由于调用的函数只是简单的要找最大值,按字典顺序排在最后的词,它可以处理数据流,而无需存储迄今为止的最大值以外的任何值。