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

×

您的支持是我原创的动力



推荐阅读
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 社交网络中的级联行为 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 本文介绍如何在Grafana配置面板时,使用JSONNet获取数组中特定元素的位置,并将其应用于动态服务查询。 ... [详细]
  • 本文介绍了如何利用TensorFlow框架构建一个简单的非线性回归模型。通过生成200个随机数据点进行训练,模型能够学习并预测这些数据点的非线性关系。 ... [详细]
  • 本文详细介绍了Java库XChart中的XYSeries类下的setLineColor()方法,并提供了多个实际应用场景的代码示例。 ... [详细]
  • 本文介绍了一种根据目标检测结果,从原始XML文件中提取并分析特定类别的方法。通过解析XML文件,筛选出特定类别的图像和标注信息,并保存到新的文件夹中,以便进一步分析和处理。 ... [详细]
  • 本文介绍了在MacOS上通过Homebrew安装Anaconda3,并配置环境变量以实现不同Python版本之间的快速切换。同时,提供了详细的步骤来创建和管理多个Python环境。 ... [详细]
  • 本文深入探讨了CART(分类与回归树)的基本原理及其在随机森林中的应用。重点介绍了CART的分裂准则、防止过拟合的方法、处理样本不平衡的策略以及其在回归问题中的应用。此外,还详细解释了随机森林的构建过程、样本均衡处理、OOB估计及特征重要性的计算。 ... [详细]
  • 详解 | 日志系统ViseLog的基本使用与功能
    本文详细介绍了日志系统ViseLog的使用方法及其核心功能,旨在帮助开发者更好地理解和利用这一工具,提高开发效率。 ... [详细]
  • 前言Git是目前最流行的版本控制系统,在它的基础之上,GitHub和GitLab成为当前最流行的代码托管平台,它们均提供的代码评审、项目管理、持续集成等功能,越来越多的互联网企业都 ... [详细]
  • addcslashes—以C语言风格使用反斜线转义字符串中的字符addslashes—使用反斜线引用字符串bin2hex—函数把包含数据的二进制字符串转换为十六进制值chop—rt ... [详细]
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社区 版权所有