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

×

您的支持是我原创的动力



推荐阅读
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • Python脚本实现批量删除多种类型文件的扩展名
    本文介绍了一个Python脚本,用于批量处理并移除指定目录下不同格式文件(如png、jpg、xml、json、txt、gt等)的文件扩展名。该方法通过递归遍历文件夹中的所有文件,并对每个文件执行重命名操作。 ... [详细]
  • 一.数据基本类型之set集合set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在se ... [详细]
  • 本文详细介绍了如何在Java Swing中使用`JButton.registerKeyboardAction()`方法来为按钮设置键盘快捷键,并提供了多个实用的代码示例。 ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • 基于51单片机的多项目设计实现与优化
    本文探讨了基于51单片机的多个项目的设计与实现,包括PID控制算法的开关电源设计、八音电子琴仿真设计、智能抽奖系统控制设计及停车场车位管理系统设计。每个项目均采用先进的控制技术和算法,旨在提升系统的效率、稳定性和用户体验。 ... [详细]
  • 本文介绍了一种有效的方法,用于从类中提取JSON属性名称,并将其用于构建查询字符串。 ... [详细]
  • Excel技巧:单元格中显示公式而非结果的解决方法
    本文探讨了在Excel中如何通过简单的方法解决单元格显示公式而非计算结果的问题,包括使用快捷键和调整单元格格式两种方法。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 春季职场跃迁指南:如何高效利用金三银四跳槽季
    随着每年的‘金三银四’跳槽高峰期的到来,许多职场人士都开始考虑是否应该寻找新的职业机会。本文将探讨如何制定有效的职业规划、撰写吸引人的简历以及掌握面试技巧,助您在这关键时期成功实现职场跃迁。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • 本文介绍了如何利用OpenCV库进行图像的边缘检测,并通过Canny算法提取图像中的边缘。随后,文章详细说明了如何识别图像中的特定形状(如矩形),并应用四点变换技术对目标区域进行透视校正。 ... [详细]
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社区 版权所有