python学习笔记

来自:https://www.runoob.com/python3/python3-tutorial.html

1.使用循环嵌套来实现99乘法法则:

for i in range(1,10):
    for j in range(1,i+1):
        sun=i*j
        print('%d*%d=%d'%(j,i,sun),end=' ')
    print('\r')

2.生成斐波纳契数列

a,b=0,1
>>> while b<1000:
    print(b,end=' ')
    a,b=b,a+b

输出:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

使用了 yield 的函数被称为生成器(generator),生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值。并在下一次执行 next()方法时从当前位置继续运行。

以下实例使用 yield 实现斐波那契数列:

import sys

def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成

while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

结果:0 1 1 2 3 5 8 13 21 34 55

3.列表推导式,对序列里每一个元素逐个调用某方法:

vec1 = [2, 4, 6]

vec2 = [4, 3, -9]
 [x*y for x in vec1 for y in vec2]
结果:[8, 6, -18, 16, 12, -36, 24, 18, -54]

4.嵌套列表解析:

展示3*4的矩形列表:

matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

将3X4的矩阵列表转换为4X3列表:
[[row[i] for row in matrix]for i in range(4)]

或者

transposed = [] 

for i in range(4):

transposed.append([row[i] for row in matrix])

transposed

或者

transposed = []
 for i in range(4):
     transposed_row = []
     for row in matrix:
         transposed_row.append(row[i])
     transposed.append(transposed_row)

transposed
结果:[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

 

posted @ 2017-07-18 09:35  anlcy  阅读(310)  评论(0编辑  收藏  举报