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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

列表输出循环左移_python 列表推导式(经典代码)(21)

發(fā)布時(shí)間:2023/12/9 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 列表输出循环左移_python 列表推导式(经典代码)(21) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章首發(fā)微信公眾號(hào),微信搜索:猿說python

截止到目前為止,python基礎(chǔ)內(nèi)容已經(jīng)學(xué)習(xí)了50%左右,在學(xué)習(xí)編程過程中,我們不僅要學(xué)習(xí)python語(yǔ)法,同時(shí)也需要學(xué)習(xí)如何把自己代碼寫的更美觀,效率更高。

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

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

二.條件推導(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)):猿說python @Github:www.github.com@File:python_list.py @Time:2019/9/30 20:45@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累! """# 新手代碼 x = 10 if x%2 == 0:print("新手說:x是偶數(shù)") else:print("新手說:x是奇數(shù)")# 老司機(jī) x = 15 print("老司機(jī)說:x是偶數(shù)") if x%2 == 0 else print("老司機(jī)說:x是奇數(shù)")

輸出結(jié)果:

新手說:x是偶數(shù) 老司機(jī)說:x是奇數(shù)

觀察上面代碼可以看出來,選手一(新手)一共占用了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á)式不成立則返回exp2condition:條件表達(dá)式exp2:在for循環(huán)中,如果x的值滿足條件表達(dá)式condition(即條件表達(dá)式成立),返回exp1;條件表達(dá)式不成立則返回exp2x: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é)覺得成敗!

假如有一個(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)系,熟能生巧.

猜你喜歡:

1.python條件判斷if/else

2.python列表list

3.for循環(huán)

4.python字典推導(dǎo)式

轉(zhuǎn)載請(qǐng)注明:猿說Python ? python列表推導(dǎo)式

想了解更多python內(nèi)容請(qǐng)直接搜索微信公眾號(hào):猿說python

Python教程 - 猿說Python?www.shuopython.com

本人也還在學(xué)習(xí)python中,博客會(huì)持續(xù)更新ing,有興趣的小伙伴關(guān)注走一波,推薦瀏覽個(gè)人博客網(wǎng)站:猿說python,文章采用樹狀分類,結(jié)構(gòu)目錄清晰一點(diǎn),文章內(nèi)容有問題的話歡迎給出建議或者直接留言.

總結(jié)

以上是生活随笔為你收集整理的列表输出循环左移_python 列表推导式(经典代码)(21)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。