1. 程式人生 > >7.5-7.6 列表生成式和生成器以及區別

7.5-7.6 列表生成式和生成器以及區別

生成式 生成器

一、列表生成式是 python 受歡迎的語法之一

通過一句簡潔的語法就可以對一組元素進行過濾

還可以對得到的元素進行轉換處理。

li = [x + x for x in range(1, 101) if x % 2 == 0]
print(li)

def funa(x):
    a=[]
    for x in range(1, 101):
        if x % 2 == 0:
            a.append(x+x)
    return a
print(funa(1))


二、列表生成器

1、最簡單的辦法,把原來的生成式的 [] 換成 () 就 ok 了

lt=(x*x for x in range(1,11) if x%2==0)
print(list(lt))
print(type(lt))
for i in lt:
    print(i)


2、函數中定義列表生成器

def fib(n):
    sum=0
    i=0
    while(i<n):
        sum=sum+i
        i+=1
        yield (sum)
print(type(fib(10)))
for x in fib(10):
    print(x)
print(type(fib(10)))


生成器和生成式的區別:

1、列表生成式,一次性生成所有的數據,然後保存在內存中,適合小量的數據

2、生成器,返回一個可以叠代的對象,及 ‘generator‘ 對象,必須通過循環才可以一一取出所以的結果

3、可叠代對象,可以通過循環調用出來的,就是可叠代的對象 [] () {} 生成式 生成器

4、叠代器 生成器,必須通過 next() 調用的,被 next() 函數調用並不斷返回下一個值得對象稱為叠代器


7.5-7.6 列表生成式和生成器以及區別