(四)Python基础_列表推导及迭代器生成器

(四)Python基础_列表推导及迭代器生成器

对Python中的高级特性:列表推导、迭代器生成器进行介绍。

列表推导

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))
如果要生成[1x1, 2x2, 3x3, …, 10x10],可以通过循环,但这样太繁琐,用列表生成式可以用一行语句生成:

1
2
3
4
5
L = []
for i in range(1,11):
L.append(ixi)
#列表方法
L = [ixi for i in range(1,11)]

for 循环后还可以添加if判断语句,仅筛选出偶数的平方:

1
L = [ixi for i in range(1,11) if i % 2 == 0]

还可以使用双重循环生成全排列:

1
2
# 输出['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
[m + n for m in 'ABC' for n in 'XYZ']

迭代器生成器

  • 生成器
    使用了yield函数被称为生成器generator,返回的是一个迭代器。
    在调用生成器运行过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时从当前位置继续运行。
  • 迭代器
    从集合的第一个元素开始访问,直到所有的元素被访问完结束,只能往前不会后;字符串、列表或元组对象都可用于创建迭代器,next()方法返回的是下一个迭代器对象。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #斐波那契数列使用迭代器生成器实现 
    import sys
    def fibonacci(n,w=0): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
    if (counter > n):
    return
    yield a
    a, b = b, a + b
    print('%d,%d' % (a,b))
    counter += 1 f = fibonacci(10,0) # f 是一个迭代器,由生成器返回生成

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

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×