【语言处理与Python】4.2序列

我们应该知道,我们常用的有三种序列。他们分别是:字符串、链表、还有一种为元组。

>>>t ='walk', 'fem', 3
    >>>t
    ('walk', 'fem', 3)
    >>>t[0]     
    'walk'
    >>>t[1:] 
    ('fem', 3)
    >>len(t)

序列类型上的操作

遍历操作:

image

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、第二个方法中,数据流像调用它的函数。由于调用的函数只是简单的要找最大值,按字典顺序排在最后的词,它可以处理数据流,而无需存储迄今为止的最大值以外的任何值。

posted @ 2013-05-24 20:41  createMoMo  阅读(202)  评论(0编辑  收藏  举报