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

×

您的支持是我原创的动力



推荐阅读
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 方法:1 配置数据库basediros.path.abspath(os.path.dirname(__file__))  #获取当前文件的绝对路径appFlask(__name__ ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • ▶书中第四章部分程序,包括在加上自己补充的代码,有边权有向图的邻接矩阵,FloydWarshall算法可能含负环的有边权有向图任意两点之间的最短路径●有边权有向图的邻接矩阵1 ... [详细]
  • 解决Element UI中Select组件创建条目为空时报错的问题
    本文介绍如何在Element UI的Select组件中使用allow-create属性创建新条目,并处理创建条目为空时出现的错误。我们将详细说明filterable属性的必要性,以及default-first-option属性的作用。 ... [详细]
  • 本文探讨了在Java多线程环境下,如何确保具有相同key值的线程能够互斥执行并按顺序输出结果。通过优化代码结构和使用线程安全的数据结构,我们解决了线程同步问题,并实现了预期的并发行为。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • 本文详细介绍了Java库XChart中的XYSeries类下的setLineColor()方法,并提供了多个实际应用场景的代码示例。 ... [详细]
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社区 版权所有