1、 生成式
li = [x*x for x in xrange(1,10) if x%2 == 0] print(li)
结果:
[4, 16, 36, 64]
def funa(): a = [] for x in xrange(1,10): if x%2 == 0: a.append(x*x) return a print(funa())
结果:
[4, 16, 36, 64]
2、 生成器
#列表生成器
#1. 最简单的方法,把原来的生成式的[]换成()就OK了
lt = (x * x for x in xrange(1,101) if x % 2 == 0) print(lt) print(type(lt)) print(lt.next()) print(lt.next()) print(lt.next()) print(lt.next())
结果:
<generator object <genexpr> at 0x03161A80>
<type 'generator'>
4
16
36
64
生成器可以用for循环调用
# for i in lt: # print(i)
#2. 函数中定义列表生成器
def fib(n): sum = 0 i = 0 while(i<n): sum = sum + i i+=1 # print(sum) yield (sum) fib(10) print(type(fib(10)))
结果:
<type 'generator'>
# for i in fib(10): # print(i)
For循环结果:
0
1
3
6
10
15
21
28
36
45
3、 用函数实现9*9乘法口诀
def sumsum(i): if i >=1: sumsum(i - 1) print(['%d * %d = %d' %(j, i, j*i) for j in xrange(1,i+1)]) sumsum(9)
结果:
['1 * 1 = 1']
['1 * 2 = 2', '2 * 2 = 4']
['1 * 3 = 3', '2 * 3 = 6', '3 * 3 = 9']
['1 * 4 = 4', '2 * 4 = 8', '3 * 4 = 12', '4 * 4 = 16']
['1 * 5 = 5', '2 * 5 = 10', '3 * 5 = 15', '4 * 5 = 20', '5 * 5 = 25']
['1 * 6 = 6', '2 * 6 = 12', '3 * 6 = 18', '4 * 6 = 24', '5 * 6 = 30', '6 * 6 = 36']
['1 * 7 = 7', '2 * 7 = 14', '3 * 7 = 21', '4 * 7 = 28', '5 * 7 = 35', '6 * 7 = 42', '7 * 7 = 49']
['1 * 8 = 8', '2 * 8 = 16', '3 * 8 = 24', '4 * 8 = 32', '5 * 8 = 40', '6 * 8 = 48', '7 * 8 = 56', '8 * 8 = 64']
['1 * 9 = 9', '2 * 9 = 18', '3 * 9 = 27', '4 * 9 = 36', '5 * 9 = 45', '6 * 9 = 54', '7 * 9 = 63', '8 * 9 = 72', '9 * 9 = 81']