最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python列表推導(dǎo)式入門學(xué)習(xí)解析

 更新時(shí)間:2019年12月02日 15:28:42   作者:猿說(shuō)python  
這篇文章主要介紹了python列表推導(dǎo)式入門學(xué)習(xí)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了python列表推導(dǎo)式入門學(xué)習(xí)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一.什么是推導(dǎo)式

推導(dǎo)式是從一個(gè)或者多個(gè)迭代器快速簡(jiǎn)潔地創(chuàng)建數(shù)據(jù)類型的一種方法,它將循環(huán)和條件判斷結(jié)合,從而避免語(yǔ)法冗長(zhǎng)的代碼,提高代碼運(yùn)行效率。能熟練使用推導(dǎo)式也可以間接說(shuō)明你已經(jīng)超越了python初學(xué)者的水平。

報(bào)錯(cuò)

二.條件推導(dǎo)式

1.語(yǔ)法

'''
value1:如果條件表達(dá)式condition成立,返回value1 ; 如果條件表達(dá)式不成立,返回value2 ;
condition:條件表達(dá)式
Value2:如果條件表達(dá)式condition成立,返回value1 ; 如果條件表達(dá)式不成立,返回value2 ;
'''
value1 if condition else Value2

2.實(shí)戰(zhàn)練習(xí)

假如有這樣一個(gè)需要:判斷一個(gè)數(shù)字是奇數(shù)還是偶數(shù)?

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解憂
@Blog(個(gè)人博客地址): shuopython.com
@WeChat Official Account(微信公眾號(hào)):猿說(shuō)python
@Github:www.github.com
 
@File:python_list.py
@Time:2019/9/30 20:45
 
@Motto:不積跬步無(wú)以至千里,不積小流無(wú)以成江海,程序人生的精彩需要堅(jiān)持不懈地積累!
"""
 
# 新手代碼
x = 10
if x%2 == 0:
  print("新手說(shuō):x是偶數(shù)")
else:
  print("新手說(shuō):x是奇數(shù)")
 
# 老司機(jī)
x = 15
print("老司機(jī)說(shuō):x是偶數(shù)") if x%2 == 0 else print("老司機(jī)說(shuō):x是奇數(shù)")

輸出結(jié)果:

新手說(shuō):x是偶數(shù)

老司機(jī)說(shuō):x是奇數(shù)

觀察上面代碼可以看出來(lái),選手一(新手)一共占用了5行代碼,而選手二(老司機(jī))完成同樣一個(gè)功能僅僅只需要兩行,這就是性價(jià)比,往往這就是職場(chǎng)上鑒別工作能力/升職加薪的細(xì)節(jié)。

三.列表推導(dǎo)式

列表推導(dǎo)式是條件推導(dǎo)式和循環(huán)一起配合使用,并返回一個(gè)列表,并且整個(gè)表達(dá)式需要在[]內(nèi),因?yàn)榉祷刂狄彩橇斜怼?/p>

1.語(yǔ)法

'''
語(yǔ)法一:
  exp1:在for循環(huán)中,如果x的值滿足條件表達(dá)式condition(即條件表達(dá)式成立),返回exp1;條件表達(dá)式不成立則不返回
  x:for循環(huán)中變量
  data:一個(gè)序列(比如:列表/元組/字符串等)
  condition:條件表達(dá)式
'''
 
[exp1 for x in data if condition]
 
'''
語(yǔ)法二:
  exp1:在for循環(huán)中,如果x的值滿足條件表達(dá)式condition(即條件表達(dá)式成立),返回exp1;條件表達(dá)式不成立則返回exp2
  condition:條件表達(dá)式
  exp2:在for循環(huán)中,如果x的值滿足條件表達(dá)式condition(即條件表達(dá)式成立),返回exp1;條件表達(dá)式不成立則返回exp2
  x:for循環(huán)中變量
  data:個(gè)序列(比如:列表/元組/字符串等)
  
'''
 
[exp1 if condition else exp2 for x in data]

2.實(shí)戰(zhàn)練習(xí)

需求一:獲取0~20的所有偶數(shù)并且乘以10,并返回所有計(jì)算之后的結(jié)果。示例代碼如下:(使用列表推導(dǎo)式語(yǔ)法一實(shí)現(xiàn))

'''
1.因?yàn)槭谦@取0~20,包括20,所以使用range(0,21)
2.x*10 等價(jià) 語(yǔ)法一中的exp1
3.x%2 == 0 等價(jià) 語(yǔ)法一中的條件表達(dá)式condition
4.range(0,21) 等價(jià) 語(yǔ)法一中的data(序列)
'''
 
list1 = [x*10 for x in range(0,21) if x%2 == 0]
print(list1)
print(type(list1))

輸出結(jié)果:

[0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200]
<class 'list'>

需求二:將0~20的偶數(shù)乘以10,奇數(shù)乘以100,并返回所有計(jì)算之后的結(jié)果。示例代碼如下:(使用列表推導(dǎo)式語(yǔ)法二實(shí)現(xiàn))

'''
1.因?yàn)槭谦@取0~20,包括20,所以使用range(0,21)
2.x*10 等價(jià) 語(yǔ)法二中的exp1
3.x*100 等價(jià) 語(yǔ)法二中的exp2
4.x%2 == 0 等價(jià) 語(yǔ)法二中的條件表達(dá)式condition
5.range(0,21) 等價(jià) 語(yǔ)法一中的data(序列)
'''
 
list2 = [x*10 if x%2 == 0 else x*100 for x in range(0,21) ]
print(list2)
print(type(list2))

輸出結(jié)果:

[0, 100, 20, 300, 40, 500, 60, 700, 80, 900, 100, 1100, 120, 1300, 140, 1500, 160, 1700, 180, 1900, 200]
<class 'list'>

3.效率對(duì)比

可能有童鞋納悶,我明明for循環(huán)就能實(shí)現(xiàn)的功能,為毛要用這鳥玩意推導(dǎo)式?

使用列表推導(dǎo)式的效率遠(yuǎn)遠(yuǎn)高于for循環(huán),可能執(zhí)行一句print(“helloworld”)對(duì)于cpu而已只需要0.0002秒,你可能感覺不到差距,如果需要輸出一億次helloworld呢?往往細(xì)節(jié)覺得成?。?/p>

假如有一個(gè)需求:將0~10000000(一億)以內(nèi)的所有整數(shù)存到列表中,對(duì)比一下列表推導(dǎo)式和for循環(huán)耗時(shí)情況:

import time # 添加time模塊,用于統(tǒng)計(jì)代碼運(yùn)行時(shí)間
 
#一共添加10000000次數(shù)據(jù)到列表中
total_num = 10000000
 
#使用列表推導(dǎo)式
start_time = time.time()
list1 = [x for x in range(0,total_num)] # 列表推導(dǎo)式
end_time = time.time()
print("使用列表推導(dǎo)式耗時(shí):{}秒".format(end_time-start_time))
 
#使用普通for循環(huán)
start_time = time.time()
list2 = list()
for x in range(0,total_num): # for循環(huán)
  list2.append(x)
end_time = time.time()
print("使用普通for循環(huán)耗時(shí):{}秒".format(end_time-start_time))

輸出結(jié)果:

使用列表推導(dǎo)式耗時(shí):0.5455152988433838秒

使用普通for循環(huán)耗時(shí):1.2068836688995361秒

輸出結(jié)果很明顯,實(shí)現(xiàn)通用的功能,列表推導(dǎo)式的效率整整高出普通for循環(huán)一倍。

最后溫馨提醒:測(cè)試請(qǐng)把循環(huán)次數(shù)改小一點(diǎn),畢竟剛開始不小心多加了幾圈圈,電腦死機(jī)了!

四.重點(diǎn)總結(jié)

1.注意在列表推導(dǎo)式書寫的時(shí)候,所有表達(dá)式都必須在[]內(nèi)部,因?yàn)榉祷刂凳橇斜韑ist

2.列表推導(dǎo)式是python開發(fā)學(xué)習(xí)的知識(shí)點(diǎn),多多聯(lián)系,熟能生巧.

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 隨機(jī)生成中文驗(yàn)證碼的實(shí)例代碼

    Python 隨機(jī)生成中文驗(yàn)證碼的實(shí)例代碼

    Python 隨機(jī)生成中文驗(yàn)證碼的實(shí)例代碼,需要的朋友可以參考一下
    2013-03-03
  • pytorch模型的保存加載與續(xù)訓(xùn)練詳解

    pytorch模型的保存加載與續(xù)訓(xùn)練詳解

    這篇文章主要為大家介紹了pytorch模型的保存加載與續(xù)訓(xùn)練詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • python清除字符串里非數(shù)字字符的方法

    python清除字符串里非數(shù)字字符的方法

    這篇文章主要介紹了python清除字符串里非數(shù)字字符的方法,涉及Python使用re模塊正則替換操作字符串的技巧,需要的朋友可以參考下
    2015-07-07
  • 分享Python?加速運(yùn)行技巧

    分享Python?加速運(yùn)行技巧

    這篇文章主要介紹了分享Python?加速運(yùn)行技巧,Python?是一種腳本語(yǔ)言,相比?C/C++?這樣的編譯語(yǔ)言,在效率和性能方面存在一些不足,本文對(duì)一些?Python?代碼加速運(yùn)行的技巧進(jìn)行整,需要的小伙伴可以參考一下
    2022-03-03
  • Scrapy之爬取結(jié)果導(dǎo)出為Excel的實(shí)現(xiàn)過程

    Scrapy之爬取結(jié)果導(dǎo)出為Excel的實(shí)現(xiàn)過程

    這篇文章主要介紹了Scrapy之爬取結(jié)果導(dǎo)出為Excel的實(shí)現(xiàn)過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用Python實(shí)現(xiàn)漢諾塔問題示例

    使用Python實(shí)現(xiàn)漢諾塔問題示例

    這篇文章主要介紹了使用Python實(shí)現(xiàn)漢諾塔問題示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python已正確安裝Numpy但無(wú)法調(diào)用背后的奧秘及解決辦法

    Python已正確安裝Numpy但無(wú)法調(diào)用背后的奧秘及解決辦法

    這篇文章主要給大家介紹了關(guān)于Python已正確安裝Numpy但無(wú)法調(diào)用背后的奧秘及解決辦法,文中提供了多種可能的原因和解決方案,同時(shí)還給出了預(yù)防措施,幫助開發(fā)者避免未來(lái)出現(xiàn)類似問題,需要的朋友可以參考下
    2024-12-12
  • 使用Python實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)相關(guān)操作詳解

    使用Python實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)相關(guān)操作詳解

    這篇文章主要介紹了使用Python實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)相關(guān)操作詳解,pymysql是Python中操作數(shù)據(jù)庫(kù)的第三方模塊,通過這個(gè)模塊的相關(guān)方法,我們可以連接并且去操作mysql數(shù)據(jù)庫(kù),需要的朋友可以參考下
    2023-08-08
  • Python extract及contains方法代碼實(shí)例

    Python extract及contains方法代碼實(shí)例

    這篇文章主要介紹了Python extract及contains方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • pandas的apply函數(shù)用法詳解

    pandas的apply函數(shù)用法詳解

    本文主要介紹了pandas的apply函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評(píng)論

清水县| 泰兴市| 冷水江市| 淳安县| 安龙县| 永川市| 昌江| 麦盖提县| 开平市| 汪清县| 临武县| 察隅县| 武平县| 青冈县| 托克逊县| 灵山县| 临夏市| 锡林浩特市| 万州区| 金坛市| 宜城市| 桐乡市| 左云县| 灵石县| 赞皇县| 荔波县| 南部县| 治县。| 原阳县| 淮滨县| 南和县| 龙里县| 瓦房店市| 开封县| 峨边| 普宁市| 东宁县| 兴业县| 清徐县| 宣威市| 滕州市|