1. 判断一个对象是否是可迭代
>>>from collections import Iterable
>>>isinstance(1,Iterable)
2. 列表生成式/推导式
列表推导式是在给定列表的基础上做一些操作然后得到一个新列表的方式,类似于 for 循环,但是比 for 循环简洁很多。
一般的列表推导式格式:
[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 [if 条件]|[for 循环]]
示例:
print [x*y for x in [1,2,3] for y in [1,2,3]]
结果:[1, 2, 3, 2, 4, 6, 3, 6, 9]
print dict([(x,x*10) for x in range(1,10)])
结果:{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60, 7: 70, 8: 80, 9: 90}
演练一下:求给定范围内和等于某个值的所有质数对及其个数(利用列表推导式)
def is_prime(num):
if num == 1:
return False
for i in range(2,num):
if num%i == 0:
return False
return True
def primeComb(num,result):
resultlst = [(x,y) for x in range(2,num+1)if is_prime(x) for y in range(x,num+1) if is_prime(y) and x+y == result]
print len(resultlst)
print resultlst
3. 关于 range 与 xrange
range(…)#所传递的参数一定要是整数
range(stop) -> 等同于 range(0,stop)
range(start, stop[, step]) -> 列出某个范围内的整数,如果有步长,则列出步长间隔的所有整数
返回一列包含一个整数算术数列
range(i, j) 返回 [i, i+1, i+2, ..., j-1]; 起始位默认是0.
当步长给定,则指明了递增规则或者递减规则
例如:range(4) 返回 [0, 1, 2, 3]. 结束位4被忽略(左闭右开)!
如果需要输出递减的数列,则需要指定步长为负数,例如
range(10,1,-1)
In [124]: range(10,1,-1)
Out[124]: [10, 9, 8, 7, 6, 5, 4, 3, 2]
class xrange(object)