欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章帶你學(xué)習(xí)Python3的高級(jí)特性(2)

 更新時(shí)間:2022年01月25日 17:23:34   作者:FUXI_Willard  
這篇文章主要為大家詳細(xì)介紹了Python3的高階函數(shù),主要介紹什么是高級(jí)特性,高級(jí)特性的用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

1.生成器

# 一邊循環(huán)一邊計(jì)算的機(jī)制,稱為生成器:generator;
# 創(chuàng)建generator方法:
# 1.把一個(gè)列表生成式的[]改成()
numsList = [num * num for num in range(10)]
print("列表生成式生成numsList:",numsList)
numsGenerator = (num * num for num in range(10))
print("生成器生成numsGenerator:",numsGenerator)
# 使用next()函數(shù)獲得generator的下一個(gè)返回值
print("打印numsGenerator第一個(gè)元素:",next(numsGenerator))
print("打印numsGenerator第二個(gè)元素:",next(numsGenerator))
print("--------------------------------------------------------")
# 使用for循環(huán)打印generator元素
print("使用循環(huán)打印生成器中的元素!")
for num in numsGenerator:
    print(num,end = " ")
print("\n")
print("--------------------------------------------------------")
# 斐波拉契數(shù)列(Fibonacci):除第一個(gè)和第二個(gè)數(shù)外,任意一個(gè)數(shù)均可由前兩個(gè)數(shù)相加得到
# 1,1,2,3,5,8,13,21,34
def fibonacci(num):
    n, a, b = 0, 0, 1
    while n < num:
        print(b,end = "  ")
        a, b = b, a + b
        n = n + 1
    return "Done"

print("Fibonacci前10項(xiàng)為:")
fibonacci(10)
print("\n")
print("--------------------------------------------------------")
# 2.把fibonacci()函數(shù)變成generator函數(shù)
def fibonacci(num):
    n, a, b = 0, 0, 1
    while n < num:
        yield b
        a, b = b, a + b
        n = n + 1
    return "Done"

# Tips:
# 1.如果一個(gè)函數(shù)定義中包含yield關(guān)鍵字,則這個(gè)函數(shù)是一個(gè)generator函數(shù);
# 2.調(diào)用一個(gè)generator函數(shù)將返回一個(gè)generator;
fib = fibonacci(10)
print("fib的值:",fib)

# 結(jié)果輸出:
列表生成式生成numsList: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
生成器生成numsGenerator: <generator object <genexpr> at 0x0000028F0E6ACB88>
打印numsGenerator第一個(gè)元素: 0
打印numsGenerator第二個(gè)元素: 1
--------------------------------------------------------
使用循環(huán)打印生成器中的元素!
4 9 16 25 36 49 64 81 

--------------------------------------------------------
Fibonacci前10項(xiàng)為:
1  1  2  3  5  8  13  21  34  55  

--------------------------------------------------------
fib的值: <generator object fibonacci at 0x0000028F0E7839A8>
 

# 普通函數(shù)和generator函數(shù)的執(zhí)行流程:
# 1.普通函數(shù):順序執(zhí)行,遇到return語(yǔ)句或最后一行函數(shù)語(yǔ)句就返回;
# 2.generator函數(shù):在每次調(diào)用next()的時(shí)候執(zhí)行,遇到y(tǒng)ield語(yǔ)句返回;
# 3.再次執(zhí)行時(shí)從上次返回的yield語(yǔ)句處繼續(xù)執(zhí)行;
# 實(shí)例:定義一個(gè)generator函數(shù),依次返回"Willard",18,"Engineer"
def willardInfo():
    print("STEP1")
    yield "Willard"
    print("--------")
    print("STEP2")
    yield 18
    print("--------")
    print("STEP3")
    yield "Engineer"

# 調(diào)用willardInfo()這個(gè)generator函數(shù),先生成一個(gè)generator對(duì)象
# 然后用next()函數(shù)不斷獲得下一個(gè)返回值,即可用循環(huán)直接打印
willardInfoObject = willardInfo()
for willard in willardInfoObject:
    print(willard)

# 結(jié)果輸出:
STEP1
Willard
--------
STEP2
18
--------
STEP3
Engineer
 

2.迭代器

# 可直接用于for循環(huán)的數(shù)據(jù)類型:
# 1.list、tuple、dict、set、str等;
# 2.generator,包括:生成器和帶yield的generator function;
# 3.可以直接作用于for循環(huán)的對(duì)象稱為可迭代對(duì)象:Iterable;
# 4.使用isinstance()判斷一個(gè)對(duì)象是否為Iterable對(duì)象;
from collections.abc import Iterable
print("判斷l(xiāng)ist是否為可迭代對(duì)象!",isinstance([],Iterable))
print("判斷dict是否為可迭代對(duì)象!",isinstance({},Iterable))
print("判斷str是否為可迭代對(duì)象!",isinstance("Willard",Iterable))
print("判斷生成式是否為可迭代對(duì)象!",isinstance((num for num in range(10)),Iterable))
print("判斷number是否為可迭代對(duì)象!",isinstance(99,Iterable))

# 結(jié)果輸出:
判斷l(xiāng)ist是否為可迭代對(duì)象! True
判斷dict是否為可迭代對(duì)象! True
判斷str是否為可迭代對(duì)象! True
判斷生成式是否為可迭代對(duì)象! True
判斷number是否為可迭代對(duì)象! False
 

# 可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)值的對(duì)象稱為迭代器:Iterator
# 使用isinstance()判斷一個(gè)對(duì)象是否為Iterator對(duì)象;
from collections.abc import Iterator
print("判斷生成器是否為迭代器!",isinstance((num for num in range(10)),Iterator))
print("判斷l(xiāng)ist是否為迭代器!",isinstance([],Iterator))
print("判斷dict是否為迭代器!",isinstance({},Iterator))
print("判斷str是否為迭代器!",isinstance("Willard",Iterator))
print("----------------------------------------------------------")
# Tips:
# 1.生成器都是Iterator對(duì)象,但list、dict、str是Iterable但不是Iterator;
# 2.Iterator對(duì)象表示數(shù)據(jù)流,Iterator對(duì)象可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)數(shù)據(jù),
# 直到?jīng)]有數(shù)據(jù)時(shí)拋出StopIteration錯(cuò)誤;這個(gè)數(shù)據(jù)流可以看作一個(gè)有序序列,
# 但不能提前知道序列的長(zhǎng)度,只能不斷通過(guò)next()函數(shù)實(shí)現(xiàn)按需計(jì)算下一個(gè)數(shù)據(jù),
# Iterator的計(jì)算是惰性的,只有在需要返回下一個(gè)數(shù)據(jù)時(shí)才計(jì)算;
# 3.使用iter()函數(shù)把list、dict、str變成Iterator;
print("使用iter()函數(shù)把list、dict、str變成Iterator.")
print("判斷l(xiāng)ist是否為迭代器!",isinstance(iter([]),Iterator))
print("判斷dict是否為迭代器!",isinstance(iter({}),Iterator))
print("判斷str是否為迭代器!",isinstance(iter("Willard"),Iterator))

# 結(jié)果輸出:
判斷生成器是否為迭代器! True
判斷l(xiāng)ist是否為迭代器! False
判斷dict是否為迭代器! False
判斷str是否為迭代器! False
----------------------------------------------------------
使用iter()函數(shù)把list、dict、str變成Iterator.
判斷l(xiāng)ist是否為迭代器! True
判斷dict是否為迭代器! True
判斷str是否為迭代器! True
 

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容! 

相關(guān)文章

  • 學(xué)生如何注冊(cè)Pycharm專業(yè)版以及pycharm的安裝

    學(xué)生如何注冊(cè)Pycharm專業(yè)版以及pycharm的安裝

    這篇文章主要介紹了學(xué)生如何注冊(cè)Pycharm專業(yè)版以及pycharm的安裝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • pytorch使用 to 進(jìn)行類型轉(zhuǎn)換方式

    pytorch使用 to 進(jìn)行類型轉(zhuǎn)換方式

    今天小編就為大家分享一篇pytorch使用 to 進(jìn)行類型轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • python中將\\uxxxx轉(zhuǎn)換為Unicode字符串的方法

    python中將\\uxxxx轉(zhuǎn)換為Unicode字符串的方法

    這篇文章主要介紹了python中將\\uxxxx轉(zhuǎn)換為Unicode字符串的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • python代碼實(shí)現(xiàn)五子棋游戲

    python代碼實(shí)現(xiàn)五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了python代碼實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python判斷telnet通不通的實(shí)例

    Python判斷telnet通不通的實(shí)例

    今天小編就為大家分享一篇Python判斷telnet通不通的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • python3獲取控制臺(tái)輸入的數(shù)據(jù)的具體實(shí)例

    python3獲取控制臺(tái)輸入的數(shù)據(jù)的具體實(shí)例

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python3獲取控制臺(tái)輸入的數(shù)據(jù)的具體實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-08-08
  • Python備份目錄及目錄下的全部?jī)?nèi)容的實(shí)現(xiàn)方法

    Python備份目錄及目錄下的全部?jī)?nèi)容的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇Python備份目錄及目錄下的全部?jī)?nèi)容的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • Python分析彩票記錄并預(yù)測(cè)中獎(jiǎng)號(hào)碼過(guò)程詳解

    Python分析彩票記錄并預(yù)測(cè)中獎(jiǎng)號(hào)碼過(guò)程詳解

    這篇文章主要介紹了Python分析彩票記錄并預(yù)測(cè)中獎(jiǎng)號(hào)碼過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python將天數(shù)轉(zhuǎn)換為日期字符串的方法實(shí)例

    python將天數(shù)轉(zhuǎn)換為日期字符串的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于python將天數(shù)轉(zhuǎn)換為日期字符串的相關(guān)資料,以及將將字符串的時(shí)間轉(zhuǎn)換為時(shí)間戳的實(shí)例代碼,需要的朋友可以參考下
    2022-01-01
  • 用python中的matplotlib繪制方程圖像代碼

    用python中的matplotlib繪制方程圖像代碼

    今天小編就為大家分享一篇用python中的matplotlib繪制方程圖像代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11

最新評(píng)論