热门标签 | 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 …

×

您的支持是我原创的动力



推荐阅读
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 本文探讨了在Java多线程环境下,如何确保具有相同key值的线程能够互斥执行并按顺序输出结果。通过优化代码结构和使用线程安全的数据结构,我们解决了线程同步问题,并实现了预期的并发行为。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • PyCharm中配置Pylint静态代码分析工具
    本文详细介绍如何在PyCharm中配置和使用Pylint,帮助开发者进行静态代码检查,确保代码符合PEP8规范,提高代码质量。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • andr ... [详细]
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社区 版权所有