基本思想:从未排序的序列中找到一个最小的元素,放到第一位,再从剩余未排序的序列中找到最小的元素,放到第二位,依此类推,直到所有元素都已排序完毕。假设序列元素总共n+1个,则我们需要找n轮,就可以使该序列排好序。在每轮中,我们可以这样做:用未排序序列的第一个元素和后续的元素依次相比较,如果后续元素小,则后续元素和第一个元素交换位置放到,这样一轮后,排在第一位的一定是最小的。这样进行n轮,就可排序。 原理图...
s = [1, 2, 3]t = st.reverse()然后s和t都变成了[3, 2, 1]但是如果s = [1, 2, 3]t = s[::-1]只有t是[3, 2, 1] s还是[1, 2, 3]不变的...所以我比较奇怪,python中的赋值,什么时候是传值什么时候是传址?回复内容: Python一切皆为对象。赋值一直都是传址。所有变量都是保存着对象的地址。首先,分析一下题主所描述的两种情况出现不同的原因。第一种情况将s赋值给了t,此时s和t指向了同一个对象。所以执行reverse时,对象本身被改变...
回复内容: 不是!首先Python的list和Haskell的list是两回事啊。。后者是链表,前者是动态数组。。然后Haskell的list comprehension的实现依靠的是转成map/filter(不考虑fusion优化),最后通过递归来实现;Python的list comprehension的实现依靠的是__iter__方法(也就是迭代器的意思),最后通过循环来实现,而迭代器的终止还需要catch一个异常。。我跟你说,他们都是从lisp学来的!!!“lisp是所有语言的鼻祖,包括出现比他早...
用nltk对自己的日记进行分析。得到以下结果(节选)\xb8\xb0, \xe5\xbc\xba\xe8\xba, \xe5\xbd\xbc\xe5, \xb8\xb4, \xb8\x8a, \xb8\x8b, \xb8\x88, \xb8\x89, \xb8\x8e, \xb8\x8f, \xb8\x8d, \xb8\x82, \xb8\x83, \xb8\x80, \xb8\x81, \xb8\x87, tend, \xb8\x9a,请问对于中文的自然语言分析,有哪些方法和工具可以推荐?回复内容:最近正在用nltk 对中文网络商品评论进行褒贬情感分类,计算评论的信息熵(entropy)、互信息(point...
回复内容: 普通方法,静态方法和类方法 这个答案的原文是Difference between @staticmethod and @classmethod in Python这里的内容是我通知原作者并得到允许的情况下的翻译稿这个是我的博客文章的地址pyhton静态方法和类方法类中最常用的方法是实例方法, 即通过通过实例作为第一个参数的方法。举个例子,一个基本的实例方法就向下面这个: class Kls(object):def __init__(self, data):self.data = datadef printd(self):print(se...
前几天又有人在我的这篇文章 python项目练习一:即时标记 下留言,关于其中一个闭包和re.sub的使用不太清楚。我在自己的博客上搜索了下,发现没有写过闭包相关的东西,所以决定总结一下,完善博客上Python的内容。 1. 闭包的概念 首先还得从基本概念说起,什么是闭包呢?来看下维基上的解释:代码如下: 在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个...
一、什么是字典? 字典是Python语言中唯一的映射类型。 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表。 字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。 字典类型与序列类型的区别: 1.存取和访问数据的方式不同。 2.序列类型只用数字类型的键(从序列的开始按数值顺序索引); 3.映射类型可以用其他对象类型作键(如:数字...
python和C++一样,支持多继承。概念虽然容易,但是困难的工作是如果子类调用一个自身没有定义的属性,它是按照何种顺序去到父类寻找呢,尤其是众多父类中有多个都包含该同名属性。 对经典类和新式类来说,属性的查找顺序是不同的。现在我们分别看一下经典类和新式类两种不同的表现: 经典类:代码如下: #! /usr/bin/python # -*- coding:utf-8 -*- class P1():def foo(self):print p1-foo class P2():def foo(self):print p2-foode...
在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某个字符结束。 startswith()函数 此函数判断一个文本是否以某个或几个字符开始,结果以True或者False返回。代码如下: text=welcome to qttc blog print text.startswith(w) # True print text.startswith(wel) # True print text.startswith(c) # False pri...
定义一个什么都不做的函数代码如下: >>> def a(): ... pass ... >>> def printHello(): ... print("hello") ... >>> printHello() hello >>> callable(printHello) True顾名思义,callable函数用于判断函数是否可以调用; 有书上说,callable在Python3.0中已经不再使用,而使用hasattr(func, __call__)代替;代码如下: >>> hasattr(printHello, __call__) True >>> printHello.__doc__ >>> def printHello(): ... just print hello...
从几年前开始学习编程直到现在,一直对程序中的异常处理怀有恐惧和排斥心理。之所以这样,是因为不了解。这次攻python,首先把自己最畏惧和最不熟悉的几块内容列出来,里面就有「异常处理」这一项。 《Dive into Python》并没有专门介绍异常处理,只是例子中用到的时候略微说明了一下。今天下载《Learn Python》,直接进异常处理这块。这一部分有四章,第一章讲解异常处理的一般使用方法,后面的章节深入地讨论其机制。我目前只看了...
看到好几位博主通过对模块的各个击破学习python,我也效法一下,本篇说一下python中加密涉及到的模块。 hashlib hashlib模块支持的加密算法有md5 sha1 sha224 sha256 sha384 sha512(加密原理请参考此处),使用起来也很简单。 以md5加密为例,有两种方法: 一、 追加模式 代码示例:代码如下:import hashlib #引入hashlib模块mm = hashlib.md5() #创建一个md5对象mm.update("Hello") #通过update方法加密文本mm.update(" world!") #...
本文较为详细的讲述了Python程序设计中函数的用法,对于Python程序设计的学习有不错的借鉴价值。具体分析如下: 一、函数的定义: Python中使用def关键字定义函数,函数包括函数名称和参数,不需要定义返回类型,Python能返回任何类型:#没有返回值的函数,其实返回的是None def run(name): print name,runing #函数体语句从下一行开始,并且第一行必须是缩进的 >>>run(xiaoming) xiaoming runing >>>print run(xiaoming) xiaom...
在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor)。 一、迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表、元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration。任何这类的对象在Python中都可以用for循...
一、__init__ 方法是什么?使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候。例如: 代码如下:# -*- coding: utf-8 -*- class Person(object): """Silly Person"""def __init__(self, name, age): self.name = name self.age = agedef __str__(self): return <Person: %s(%s)> % (self.name, self.age) if __name__ == __main__: ...