随笔分类 - Python
Python 是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。
摘要:for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。 对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列: >>> [m + n for m in 'ABC' for n in '123']['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'] 翻译成循环代码就像下面这样:
阅读全文
摘要:列表生成式的 for 循环后面还可以加上 if 判断。例如: >>> [x * x for x in range(1, 11)][1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选: >>> [x * x for x in range(1, 11) if x % 2 == 0][4, 16, ...
阅读全文
摘要:使用for循环的迭代不仅可以迭代普通的list,还可以迭代dict。 假设有如下的dict: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } 完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格: tds = ['%s%s' % (name, score) for name, score in d.iteritems()]print ''print '...
阅读全文
摘要:要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环: >>> L = []>>> for x in range(1, 11):... L.app...
阅读全文
摘要:我们了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的。 首先,我们看看 dict 对象的 items() 方法返回的值: >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }>>> print d.items()[('Lisa', 85), ('Adam', 95), ('Bart'...
阅读全文
摘要:我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key。 如果我们希望迭代 dict 对象的value,应该怎么做? dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value: d = { 'Adam': 95, 'Lisa': 85, 'B...
阅读全文
摘要:Python中,迭代永远是取出元素本身,而非元素的索引。 对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办? 方法是使用 enumerate() 函数: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul']>>> for index, name in enumerate(L):... print index, '-', n...
阅读全文
摘要:在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。 在Python中,迭代是通过 for ... in 来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码: for (i=0; i<list.length; i++) { n = list[i];} 可以看出...
阅读全文
摘要:字符串 'xxx'和 Unicode字符串 u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串: >>> 'ABCDEFG'[:3]'ABC'>>> 'ABCDEFG'[-3:]'EFG'>>> 'ABCDEFG'[::2]'ACEG' 在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字...
阅读全文
摘要:对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> L[-2:]['Bart', 'Paul'] >>> L[:-2]['Adam', 'Lisa'] >>> L[-3:-1]['Lisa', 'Bart'] >>>
阅读全文
摘要:取一个list的部分元素是非常常见的操作。比如,一个list如下: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3个元素,应该怎么做? 笨办法: >>> [L[0], L[1], L[2]]['Adam', 'Lisa', 'Bart'] 之所以是笨办法是因为扩展一下,取前N个元素就没辙了。 取前N个元素,也就是索引为0-(N-1)的元素,可以用循环: >...
阅读全文
摘要:如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数: def fn(*args): print args 可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数: >>> fn()()>>> fn('a')('a',)>>> fn('a', 'b')('a', 'b')>>> fn('a', 'b', 'c')('a', 'b&
阅读全文
摘要:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出: fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n 所以,fact(n)可以表示为 n * fact(n-...
阅读全文
摘要:前面我们看到了tuple一旦创建就不能修改。现在,我们来看一个“可变”的tuple: >>> t = ('a', 'b', ['A', 'B']) 注意到 t 有 3 个元素:'a','b'和一个list:['A', 'B']。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到: >>> L = t[2] 然后,我们把list的两个元素改一改: >>> L[0] =...
阅读全文
摘要:tuple和list一样,可以包含 0 个、1个和任意多个元素。 包含多个元素的 tuple,前面我们已经创建过了。 包含 0 个元素的 tuple,也就是空tuple,直接用 ()表示: >>> t = ()>>> print t() 创建包含1个元素的 tuple 呢?来试试: >>> t = (1)>>> print t1 好像哪里不对!t 不是 tuple ,而是整数1。为什么呢? 因为(...
阅读全文
摘要:字符串还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122...
阅读全文
摘要:一、何为pep8? PEP 8官方文档 -- Style Guide for Python Code PEP8中文翻译(转) 二、Pycharm中配置pep8 Pycharm本身是有pep8风格检测的,当你敲得代码中不符合规范时,会有下划波浪线提示。如何让代码修改为符合规范,去掉这些难看的波浪线呢?下面介绍步骤: 2.1安装autopep8 cmd窗口输入:pip install autopep...
阅读全文
摘要:python文本 maketrans和translate 场景: 过滤字符串的某些字符,我们从例子出发 >>> tb=str.maketrans ('abc','123') >>> 'abcd'.translate (tb) '123d' >>> 'abcd+++a+b+cd'.translate (tb) '123d+++1+2+3d' >>> 1.建立字...
阅读全文
摘要:python文本 字符串逐字符反转以及逐单词反转 场景: 字符串逐字符反转以及逐单词反转 首先来看字符串逐字符反转,由于python提供了非常有用的切片,所以只需要一句就可以搞定了 >>> a='abc edf degd' >>> a[::-1] 'dged fde cba' >>> 然后我们来看住单词反转 1.同样的我们也可以使用切片 >>> a='abc edf...
阅读全文
摘要:python文本 拼接、合并字符串 场景: 拼接、合并字符串 在这个场景中,我们首先想到的当然是使用+或者+=将两个字符串连接起来 >>> a='a' >>> b='b' >>> c=a+b >>> c 'ab' >>> 如果整个程序只有两个字符串需要拼接,那没有问题 但是如果程序里面大量存在拼接,甚至需要循环拼接,这个时候性能问题就会出现 原因:字符串是不...
阅读全文

浙公网安备 33010602011771号