python2中range和xrange的异同
range
函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。
range示例:
range(5)
[0, 1, 2, 3, 4]
range(1,5)
[1, 2, 3, 4]
range(0,6,2)
[0, 2, 4]
xrange
函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。
xrange示例:
>>> xrange(5)
xrange(5)
>>> list(xrange(5))
[0, 1, 2, 3, 4]
>>> xrange(1,5)
xrange(1, 5)
>>> list(xrange(1,5))
[1, 2, 3, 4]
>>> xrange(0,6,2)
xrange(0, 6, 2)
>>> list(xrange(0,6,2))
[0, 2, 4]
range会直接生成一个list对象;
而xrange则不会直接生成一个list,而是每次调用返回其中的一个值
所以xrange做循环的性能比range好,尤其是返回很大的时候,尽量用xrange吧,除非你是要返回一个列表。
match和search的区别
re.match(pattern, string)
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。如果是则返回
re.search(pattern, string)
re.search 扫描整个字符串并返回第一个成功的匹配,否则返回None。
match 和search 的区别
re.match只匹配字符串的开始,如果字符串不符合正则表达式,则匹配失败,函数返回None;
而search匹配的是整个字符串,直到找到一个匹配。否则匹配失败,返回None;
x = 1 and 2 or 3 , x的值为多少?
x的值为2
‘and’、‘or’和‘not’的优先级是not>and>or
因为and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量,
而或逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量
装饰器的作用
在不更改函数的情况下,为函数添加额外的功能。
一行代码写出99乘法表
print('\n'.join(['\t'.join(["%2s*%2s=%2s"%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))