热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python结构化程序设计风格_Python自然语言处理04编写结构化程序

前言4.1回到基础赋值(略)barfoo[:]copy.deepcopy()等式(略)is条件语句ifelifall()any()4.2序列字符串链表元组序列类型上的操作表4-1P

前言

4.1 回到基础

赋值(略)bar = foo[:]

copy.deepcopy()

等式(略)

is

条件语句 if elif all() any()

4.2 序列字符串

链表

元组

序列类型上的操作表4-1 P148

|Python表达式|评论|

|-|-|

for item in s |

for item in sorted(s) |按顺序遍历

for item in set(s) |

for item in reversed(s) |逆序遍历

for item in set(s).defference(t) |在s中不在t中

for item in random.shuffle(s) |随机顺序遍历

转换:

tuple(s)

list(s)

':'.join(words)

操作:

zip(words,tags) 将两个或更多序列打包成单个配对链表

enumerate(s) 包含index+项目的配对

合并不同类型的序列下划线表示不会使用到其值的变量

使用元组还是使用链表可以看一个项目的内容是否取决于它的位置

列表可变,元组不可变

产生器表达式链表表达式: max([w.lower() for w in alist])

产生器表达式: max(w.lower() for w in alist)

4.3 风格的问题(略)

python代码风格

过程风格与声明风格(略)

计数器的一些合理用途使用循环变量提取链表中连续重叠的 n-grams

[sent[i:i+n] for i in range(len(sent)-n+1)]

NLTK支持函数bigrams(text)

trigrams(text)

ngrams(text,n)

确保语法正确

4.4 函数:结构化编程的基础

函数的输入和输出(略)

参数传递(略)

变量的作用域(略)

名称解析的LGB规则:本地(local),全局(global),内置(built_in)

参数类型检测

防御性编程

`assert isinstance(word,basestring),”argument to tag() mast be a string”

功能分解

重构

文档说明函数

函数顶部docstring约定信息:

doctest

NLTK 使用 “epytext” 标记语言来记录参数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25def (reference, test):

"""

Calculate the fraction of test items that equal the corresponding reference items.

Given a list of reference values and a corresponding list of test values,

return the fraction of corresponding values taht are equal.

In particular, return the fraction of indexes

{0

>>> accuracy(['ADJ', 'N', 'V', 'N'], ['N', 'N', 'V', 'ADJ'])

0.5

@param reference: An ordered list of reference values.

@type reference: C{list}

@param test: A list of values to compare against the corresponding reference values.

@type test: C{list}

@rtype: c{float}

@raise ValueError: If C{reference} and C{length} do not have the same length

"""

if len(reference) != len(test):

raise ValueError("Lists must have the same length.")

num_correct = 0

for x, y in zip(reference, test):

if x == y:

num_correct += 1

return float(num_correct) / len(reference)

4.5 更多关于函数

作为参数的函数传递函数名称当做参数

lambda表达式

``

累计函数生成器 yield 关键字

高阶函数filter()

map()

参数的命名*args -> 对应函数所有未命名参数

**kwargs -> 关键字参数字典

已命名参数作用:

允许选择性的使用参数(给定默认值)

作为标志使用(日志输出标识等)

[注]:不要使用可变对象作为参数的默认值

4.6 程序开发

关键高层次能力:算法设计及其在结构化编程中的实现

关键低层次能力:熟悉语言的语法结构,拍出程序故障的各种诊断方法.

Python 模块的结构__file__ 变量定位系统代码的位置

_{变量/方法} 以下划线开头,表示仅用于模块内部

__all__ 内置变量,列出模块的外部可访问列表

多模块程序

误差源头

调试技术

调用调试器

1

2

3import pdb

import mymodule

pdb.run('mymodule.myfunction()')

step (s)执行当前行

next (n)运行下一行后停止

break (b)创建或列出断点

coninue (c)继续执行知道遇到下一个断点

防御性编程

维护一套测试用例,(回归测试)

4.7 算法设计分而治之

二分查找

递归

空间与时间的权衡

动态规划

4.8 Python 库的样例matplotlib

networkx

csv

numpy

and so on …

×

您的支持是我原创的动力



推荐阅读
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
author-avatar
和老师一起喝咖啡_171
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有