網(wǎng)站首頁 編程語言 正文
列表生成式基礎(chǔ)語法
[exp for iter_var in iterable (if conditional)]
原理:
- 首先迭代 iterable 里所有內(nèi)容,每一次迭代,都把iterable里相應(yīng)的內(nèi)容放在iter_var中,再把表達(dá)式exp應(yīng)用該iter_var的內(nèi)容,根據(jù)條件進(jìn)行篩選
- 最后用 表達(dá)式的計(jì)算值 生成一個新的列表
優(yōu)先于for和if循環(huán):
- 1、比for循環(huán)快得多
- 2、被認(rèn)為比循環(huán)和映射函數(shù)更具有python特性
- 3、列表生成式的語法更容易閱讀
1. 使用列表生成式,一行解決for循環(huán)
# 實(shí)現(xiàn)[1,2,3,4,5]的列表
alist1 = list(range(1,6))
print(alist1)
# 實(shí)現(xiàn)[1,4,9,16,25,36,49]的列表
alist2 = []
for i in range(1,8):
alist2.append(i*i)
print(alist2)
# 用一行實(shí)現(xiàn)
alist = [i*i for i in range(1,8)]
print(alist)
#結(jié)果:
[1, 2, 3, 4, 5]
[1, 4, 9, 16, 25, 36, 49]
[1, 4, 9, 16, 25, 36, 49]
2. 雙層循環(huán)
list2 = [x+y for x in range(1,5) for y in range(1,6)]
#結(jié)果:
[2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8, 5, 6, 7, 8, 9]
3. 加判斷語句,條件過濾
list3 = [x for x in range(1,10) if x>5]
print(list3)
#結(jié)果:
[6, 7, 8, 9]
4. 加入函數(shù)
L = ['Heli','JACK','ab']
l1 = [i.lower() for i in L]
print(l1)
#結(jié)果:
['heli', 'jack', 'ab']
5. 常見幾種迭代器:range、 zip 、 enumerate 、 filter 、 reduce
zip生成列表,生成字典
zip()函數(shù)接受一系列可迭代對象作為參數(shù),將不同對象中相對應(yīng)的元素打包成一個元組(tuple),返回由這些元組組成的list列表
l1 = [1,3,6]
l2 = [5,8,9]
for (x,y) in zip(l1,l2):
print(x,y,x+y)
#結(jié)果:
1 5 6
3 8 11
6 9 15
keys = ['a','c','f']
vals = [1,7,3]
D2 = {}
for (k,v) in zip(keys,vals): D2[k]=v
print(D2)
#結(jié)果:{'a': 1, 'c': 7, 'f': 3}
enumerate() 函數(shù)用于將一個可遍歷的數(shù)據(jù)對象(如列表、元組或字符串)組合為一個索引序列,同時列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在for循環(huán)中
enumerate(seq, [start=0]) ,返回枚舉對象
seasons = ['spring', 'summer', 'winter']
a = list(enumerate(seasons))
for i,element in enumerate(seasons):
print(i,element)
#結(jié)果:
0 spring
1 summer
2 winter
關(guān)于filter 、 reduce,具體可查看上一篇文章
python高階函數(shù)使用教程示例
原文鏈接:https://www.jianshu.com/p/483c58441020
相關(guān)推薦
- 2022-04-15 使用python測試prometheus的實(shí)現(xiàn)_python
- 2021-12-11 Linux環(huán)境下查看日志文件命令詳解_Linux
- 2022-10-01 React?hooks?useState異步問題及解決_React
- 2022-09-05 Go語言接口的用法詳解_Golang
- 2022-06-08 FreeRTOS實(shí)時操作系統(tǒng)的內(nèi)存管理分析_操作系統(tǒng)
- 2023-12-09 添加依賴時,出現(xiàn)了此問題maven Cannot resolve org.apache.dubbo:
- 2022-03-20 Android自動攔截與接聽功能APK黑白名單_Android
- 2022-09-25 2022react高頻面試題有哪些
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支