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

  • 相关阅读:
    spring boot 配置rabbitmq启动遇到的问题
    linux 启动rabbitmq 报错:
    spring boot 读取自定义properties文件
    jvm笔记-02-垃圾收集器与内存分配策略
    Jvm笔记-01-Java运行时数据区域与对象
    C++ 14 重载操作符与转换
    C++ 13 复制控制
    C++ 12 类
    C++ 11 泛型算法、迭代器
    android studio 问题及处理记录
  • 原文地址:https://www.cnblogs.com/createMoMo/p/3097560.html
Copyright © 2020-2023  润新知