Category Archive for: 蟒蛇

RegExp(正则表达式)

RegExp(正则表达式)家庭作业帮助 正则表达式 我们Python教程本章的目的是向正则表达式提供详细的引导和描述性介绍。本介绍将解释正则表达式的理论方面,并将向您展示如何在Python脚本中使用它们。 术语“正则表达式”有时也称为正则表达式或正则表达式,源于理论计算机科学。在理论计算机科学中,它们被用来定义具有某种特征的语言系列,即所谓的普通语言。对于每个正则表达式,存在接受正则表达式定义的语言的有限状态机(FSM)。我们实现了(Python中的有限状态机), 正则表达式用于编程语言中以过滤文本或文本串。如果文本或字符串与正则表达式匹配,可以检查。 正则表达式的一个方面不应该不提及:正则表达式的语法对于所有编程和脚本语言都是相同的,例如Python,Perl,Java,SED,AWK甚至X#。 介绍 当我们介绍顺序数据类型时,我们知道“in”运算符。我们检查以下示例,如果字符串“easy”是字符串“正则表达式轻松解释!”的子字符串:  简单的正则表达式 我们在上一节中已经说过,我们可以将变量“sub”看作一个非常简单的正则表达式。 如果要在Python中使用正则表达式,则必须导入re模块,该模块提供了处理正则表达式的方法和函数。 在Python中表示正则表达式 您可以使用其他语言来表示斜杠“/”中的正则表达式,例如那就是Perl,SED或AWK处理他们的方式。在Python中没有特殊的符号。正则表达式表示为普通字符串。 但这种方便带来了一个小问题:反斜杠是正则表达式中使用的特殊字符,但也用作字符串中的转义字符。这意味着Python首先会对字符串的每个反斜杠进行评估,之后 – 不必要的反斜杠 – 它将被用作正则表达式。防止这种情况的一种方法是将每个反斜杠写为“\\”,并将其用于评估正则表达式。克服此问题的最佳方法在于将正则表达式标记为原始字符串。 r“^ a。* \。html $” 我们以前的示例的常规示例匹配所有以“a”开始并以“.html”结尾的文件名(字符串)。我们将在后面的章节中详细介绍上面的例子的结构。 r“cat”是一个正则表达式,虽然是一个非常简单的,没有任何元字符。我们的“猫”匹配例如以下字符串:“猫和老鼠不能成为朋友”。 有趣的是,前面的例子显示了一个错误的“最喜欢的”例子,这个例子不仅仅是初学者和新手,而且也是正规表达式的高级用户。这个例子的想法是匹配包含单词“cat”的字符串。我们是成功的,但不幸的是,我们也匹配了很多其他的话。如果我们匹配一个可能仍然可以的字符串中的“猫”,但是所有包含这个字符序列“猫”的字呢?我们匹配“教育”,“沟通”,“伪造”,“后果”,“牛”等词。这是“过度匹配”的情况,即我们收到积极的结果,根据我们想要解决的问题,这是错误的。 我们已经在右图中说明了这个问题。深绿色圆圈C对应于我们想要识别的“对象”集合。但是,我们匹配集合O(蓝色圆圈)的所有元素。 C是O的子集。 该图中的集合U(浅绿色圆圈)是C.的子集。U是“匹配”的情况,即如果正则表达式不匹配所有预期的字符串。如果我们尝试修复以前的RE,所以它不会创建超匹配,我们可以尝试表达式r“cat”。这些空白妨碍了上述“教育”,“伪造”和“分歧”等词语的匹配,但我们也是另一个错误的牺牲品。字符串“猫,叫奥斯卡,爬上屋顶。”问题是我们不期待一个逗号,但只能在“猫”之后的空白处。 在我们继续描述正则表达式的语法之前,我们要解释如何在Python中使用它们: >>> import re >>> x = re.search(“猫”,“猫和老鼠不能成为朋友”) >>>打印x <_sre.SRE_Match object at 0x7fd4bf238238> >>> x = re.search(“cow”,“一只猫和一只老鼠不能是朋友”) >>>打印x 没有 在前面的例子中,我们必须导入模块re才能使用正则表达式。然后我们使用re模块中的方法搜索。这最可能是这个模块最重要和最常用的方法。 re.search(expr,s)检查字符串s是否与正则表达式expr匹配的子字符串的出现。将返回满足该条件的第一个子字符串(从左)。如果匹配是可能的,我们得到一个所谓的匹配对象,否则值为None。这个方法已经足以在Python程序中使用正则表达式: >>>如果re.search(“猫”,“一只猫和一只老鼠不能成为朋友”): …打印“某种猫被发现:-)” …其他: …打印“没有找到猫:-(” … 已发现某种猫:-)…

Read More →

队列

队列家庭作业帮助 队列模块提供适用于多线程编程的FIFO实现。它可以用于安全地在生产者和消费者线程之间传递消息或其他数据。为调用者处理锁定,因此要使用同一个Queue实例具有尽可能多的线程很简单。队列的大小(元素数量)可能会被限制为限制内存使用或处理。 注意 这个讨论假设你已经了解了队列的一般性质。如果没有,您可能需要在继续之前阅读一些参考。 基本FIFO队列 Queue类实现了一个基本的先入先出的容器。使用put()将元素添加到序列的一个“end”,并从另一端使用get()进行删除。 导入队列 q = Queue.Queue() 对于我在范围(5):     q.put(i) 而不是q.empty():     打印q.get() 此示例使用单个线程来说明以与插入的顺序相同的顺序从队列中删除元素。 $ python Queue_fifo.py LIFO队列 与Queue的标准FIFO实现相反,LifoQueue使用最后进先出顺序(通常与堆栈数据结构相关联)。 导入队列 q = Queue.LifoQueue() 对于我在范围(5):     q.put(i) 而不是q.empty():     打印q.get() get()删除最近put()到队列中的项目。 $ python Queue_lifo.py 4 3 2 1 0 优先队列 有时,队列中项目的处理顺序需要基于这些项目的特征,而不仅仅是它们创建或添加到队列中的顺序。例如,来自工资部门的打印作业可能优先于开发人员打印的代码列表。 PriorityQueue使用队列内容的排序顺序决定要检索的内容。 导入队列 类Job(对象):     def __init __(self,priority,description):         self.priority =优先级         self.description = description         打印“新工作:”,说明         返回     def __cmp __(self,other):…

Read More →

经营者

经营者家庭作业帮助 简介在编程中的表达式就像数学中的公式:两者都使用值(在Python文字和绑定到值的名称)来计算结果。但与数学不同,Python中的表达式可以计算各种类型(例如布尔值和字符串)的结果,而不仅仅是数学结果。在本章中,我们将研究表达式(它们的语法)的结构和表达式的含义(它们的语义)。表达式就像分子:它们是由原子(文字和名称,它们具有价值)和将原子保持在原位(化合物和功能调用)的化学键构成的。我们通过理解他们的组件来理解表达。我们已经学习了文字和名字;我们现在将研究一个操作符列表的语法和语义,然后学习Python中可以使用的一般规则来组合和理解复杂的表达式。作为研究运营商洗衣单的辅助工具,我们将使用每个运算符作为算术,关系,逻辑,逐位或序列(例如字符串)进行分类。当我们学习在Pythong中构建复杂的表达式时,我们将研究椭圆图作为理解它们的主要分析工具。椭圆图帮助我们了解表达式是否在语法上是正确的,以及表达式计算的值(计算)。 运营商类型 Python语言支持以下类型的运算符。 算术运算符 比较(关系)运算符 家庭作业经营者 逻辑运算符 按位运算符 会员运营商 身份运营商 Python比较运算符 这些运算符比较了它们两边的值,并决定了它们之间的关系。它们也称为关系运算符。 假设变量a保持10,变量b保持20,则 – 特种运营商 Python语言提供了一些特殊类型的运营商,如身份运营商或会员运营商。下面介绍它们的例子。 身份运营商 是和不是Python中的身份运算符。它们用于检查两个值(或变量)是否位于存储器的同一部分。两个相等的变量并不意味着它们是相同的。 运算符模块导出与Python内在运算符相对应的一组有效函数。例如,operator.add(x,y)等效于表达式x + y。函数名是用于特殊类方法的函数名;为方便起见,也提供了不带前导和尾部的变体__。 这些功能分为执行对象比较,逻辑运算,数学运算,序列运算和抽象类型测试的类别。 //操作符执行Python的整数除法版本。 Python的整数除法与其他一些语言(如C)所提供的整数除法不完全相同,因为它向负无穷大而不是朝向零。与模数运算符一起,你可以说a ==(a // b)* b +(a%b)。在Python 2中,当您划分两个整数(使用正常除法运算符/)时,floor division是默认行为。因为这可能是意想不到的(特别是当你不明白什么类型的数字作为一个函数的参数时),Python 3已经改变为使“true”(浮点)划分为四舍五入的规则否则,只有在明确要求的时候才会做“地板”划分。 (您也可以通过将__future__导入部分放在文件的顶部,在Python 2中获得新的行为,我强烈推荐!) 在要评估的每对术语之间进行比较。例如,在第一个示例中,1 <x被评估为True而x <2被评估。它不像1 <x被评估为True,然后True <3被评估为True!每个术语都被评估一次。 按位运算符用于比较二进制格式的整数。 当在2个整数之间执行二进制运算时,首先将其转换为二进制数。 让我们举几个例子来解释按位操作。 2和值5和4之间的操作实际上是1011和1001二进制之间的操作。 短路评估 为了加速布尔评估,Python使用短路评估。这意味着布尔评估可能会停止,如果其一个表达式为False。例如,以下表达式始终为False 运算符是指示执行某个进程的特殊符号。编程语言中的运算符来自数学。应用程序使用数据。运算符用于处理数据。 在Python编程语言中,我们有几种类型的运算符: 算术运算符 布尔运算符 关系运算符 按位运算符 操作员可以具有一个或两个操作数。操作数是操作符的输入(自变量)之一。那些仅使用一个操作数的操作符称为一元操作符。那些使用两个操作数的人称为二进制运算符。 +和 –…

Read More →

模块

模块家庭作业帮助 一个模块允许您逻辑地组织您的Python代码。将相关代码分组到一个模块中,使代码更容易理解和使用。一个模块是一个具有任意命名的属性的Python对象,可以绑定和引用。 简单来说,一个模块是一个由Python代码组成的文件。模块可以定义函数,类和变量。模块还可以包括可运行的代码。 例 名为aname的模块的Python代码通常位于名为aname.py的文件中。以下是一个简单模块support.py的示例 def print_func(par):    打印“你好:”,par    返回 进口报关单 您可以通过在其他Python源文件中执行import语句来将任何Python源文件用作模块。导入具有以下语法: import module1 [,module2 [,… moduleN] 当解释器遇到导入语句时,如果该模块存在于搜索路径中,它将导入该模块。搜索路径是导入模块之前解释器搜索的目录的列表。例如,要导入模块support.py,您需要将以下命令放在脚本的顶部 – #!/ usr / bin / python #导入模块支持 导入支持 #现在可以调用模块的定义函数,如下所示 support.print_func(“Zara”) 当执行上述代码时,会产生以下结果 – 你好:Zara 模块只能加载一次,而不管导入的次数。这样可以防止在多次导入时重复执行模块。 从…导入声明 Python的from语句允许您将模块中的特定属性导入到当前命名空间中。从…导入具有以下语法 – 从modname import name1 [,name2 [,… nameN]] 例如,要从module fib导入函数fibonacci,请使用以下语句 – 从纤维进口fibonacci 此语句不会将整个模块fib导入当前命名空间;它将项目fibonacci从模块fib引入导入模块的全局符号表。 来自… import *语句: 还可以使用以下import语句将模块中的所有名称导入到当前命名空间中 – 从modname导入* 这提供了将模块中的所有项导入到当前命名空间中的简单方法;但是,这个说法应该谨慎使用。 定位模块 导入模块时,Python解释器按照以下顺序搜索模块…

Read More →

列表

列表家庭作业帮助 Python中最基本的数据结构是序列。一个序列的每个元素被分配一个数字 – 它的位置或索引。第一个索引为零,第二个索引为1,依此类推。 Python有六种内置的序列类型,但最常见的是列表和元组,我们将在本教程中看到。 有一些事情你可以做所有的序列类型。这些操作包括索引,切片,添加,乘法和检查成员资格。此外,Python还具有用于查找序列长度和查找其最大和最小元素的内置函数。 Python列表 该列表是Python中最通用的数据类型,可以写成方括号之间的逗号分隔值(项)列表。关于列表的重要事项是列表中的项目不必是相同的类型。 创建列表就像在方括号之间放置不同的逗号分隔值一样简单。例如 – list1 = [‘physics’,’chemistry’,1997,2000]; list2 = [1,2,3,4,5]; list3 = [“a”,“b”,“c”,“d”] 类似于字符串索引,列表索引从0开始,列表可以被切片,连接等等。 访问列表中的值 要访问列表中的值,请使用方括号进行切片以及索引或索引,以获取该索引处可用的值。例如 – #!/ usr / bin / python list1 = [‘physics’,’chemistry’,1997,2000]; list2 = [1,2,3,4,5,6,7]; 打印“list1 [0]:”,list1 [0] 打印“list2 [1:5]:”,list2 [1:5] 当执行上述代码时,会产生以下结果 – list1 [0]:物理学 list2 [1:5]:[2,3,4,5] 更新列表 您可以通过将赋值运算符左侧的切片提供给列表的单个或多个元素,您可以使用append()方法添加到列表中的元素。例如 – #!/ usr / bin /…

Read More →

Back to Top