日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

生成器 python0 1 8 27 64_python 生成式和生成器

發布時間:2025/3/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生成器 python0 1 8 27 64_python 生成式和生成器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# @Time : 2017/10/17 21:46

# @Author : lijunjiang

# @File : test.py

"""

列表生成式

一個用來生成列表的特定語法形式的表達式。可以對一組元素進行過濾或得到對列表元素進行處理后得到的結果

可以快速的根據已存在的可迭代對象推導出一個新的list

語法格式:

[exp for val in collection if condition]

執行過程:

先對傳入的列表進行for循環得到將符合條件的元素再進行if判斷返回給exp

執行exp表達式,最后將處理后的結果以列表的形式返回一個列表

"""

tuple_test = [x*x for x in xrange(10) if x*x%2 == 0]

print(type(tuple_test))

print(tuple_test)

# 執行結果:

#

# [0, 4, 16, 36, 64]

# 等價于

tuple_test1 = []

for i in xrange(10):

if i*i%2 == 0:

tuple_test1.append(i)

print(type(tuple_test1))

print(tuple_test1)

# # 執行結果:

#

# [0, 2, 4, 6, 8]

"""

生成器

在Python中,這種一邊循環一邊計算的機制,稱為生成器

生成器是按照某種算法不斷生成新的數據,直到滿足某一個指定的條件結束

每次只生成一個元素,不必創建完整的list,從而節省大量的空間

構造生成器的兩種方式:

1、使用類似列表生成式的方式生成 (2*n + 1 for n in range(3, 11)) 將生成式的[],換為()

2、使用包含yield的函數來生成

如果計算過程比較簡單,可以直接把列表生成式改成generator;

但是,如果計算過程比較復雜,就只能通過包含yield的函數來構造generator。

"""

# 使用類似于列表生成式的方式來構造生成器

print('使用類似于列表生成式的方式來構造生成器')

print('generatot = (x*x for x in xrange(10) if x*x%2 == 0)')

generatot = (x*x for x in xrange(10) if x*x%2 == 0)

print(type(generatot))

print(generatot)

for i in generatot:

print(i)

print('使用包含yield的函數構造生成器')

def func1():

for i in xrange(10):

if i*i%2 == 0:

yield i*i

generatot1 = func1()

print(type(generatot1))

print(generatot1)

for i in generatot1:

print(i)

# 執行結果:

# 使用類似于列表生成式的方式來構造生成器

# generatot = (x*x for x in xrange(10) if x*x%2 == 0)

#

# at 0x0000000002BA1480>

# 0

# 4

# 16

# 36

# 64

# 使用包含yield的函數構造生成器

#

#

# 0

# 4

# 16

# 36

# 64

"""

生成式和生成器的區別:

生成式直接返回了表達式的結果列表,

生成器返回的是一個對象,該對象包含了對表達式結果的計算引用, 通過循環可以直接輸出

生成器不會一次性列出所有的數據,當你用到的時候,在列出來,更加節約內存的使用率。

"""

"""

可迭代對象(Iterable)

即可直接用于for循環的對象統稱為可迭代對象(Iterable)。

類型有:list、tuple、dict、set、str、生成器

可以使用isinstance()來判斷一個對象是否是Iterable對象

迭代器(Iterator)

可以被next()函數調用并不斷返回下一個值的對象稱為迭代器:Iterator

Python中的Iterator對象表示的是一個數據流,

Iterator可以被next()函數調用被不斷返回下一個數據,直到沒有數據可以返回時拋出StopIteration異常錯誤。

可以把這個數據流看做一個有序序列,但我們無法提前知道這個序列的長度。

同時,Iterator的計算是惰性的,只有通過next()函數時才會計算并返回下一個數據

http://www.cnblogs.com/yyds/p/6281453.html

"""

# 實現99乘法表

def func3():

for i in xrange(1, 10):

for j in xrange(1, i+1):

print('{0}*{1}={2}'.format(j, i, i*j)),

print('\n')

func3()

#執行結果:

# 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

總結

以上是生活随笔為你收集整理的生成器 python0 1 8 27 64_python 生成式和生成器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。