Python列表生成式和字典生成式實(shí)例
列表生成式
格式
[ x for x in 可迭代對(duì)象] [ x for x in 可迭代對(duì)象 if 條件]
1. 把要生成的元素 x 放到前面,執(zhí)行的時(shí)候,先執(zhí)行后面的for循環(huán)。
2. 后面跟上for循環(huán),可以有多個(gè)for循環(huán),也可以在for循環(huán)后面再加個(gè)if條件。
3. for循環(huán)后面可以是任何方式的迭代器(元組/列表/生成器..),只要可迭代對(duì)象的元素中至少有一個(gè)值。
例1:最簡單的
In [1]: [x for x in 'abcd'] Out[1]: ['a', 'b', 'c', 'd']
例2:加if判斷
In [1]: res = [10,11,12,13] In [2]: [x for x in res if x > 10] Out[2]: [11, 12, 13] 原生實(shí)現(xiàn): In [1]: arr = [] In [2]: for x in res: ....: if x > 10: ....: arr.append(x) ....: In [3]: arr Out[3]: [11, 12, 13]
例3:迭代字典生成列表
print [v for k,v in {'a':'one','b':'two'}.items()] 輸出:['one', 'two'] print [(k,v) for k,v in {'a':'one','b':'two'}.items()] 輸出:[('a', 'one'), ('b', 'two')] print [k+'='+v for k,v in {'name':'lyz','age':'26','job':'IT'}.items()] 輸出:['job=IT', 'age=26', 'name=lyz']
字典生成式
格式
1. 在Python2.6或更早的版本,字典生成器可以接受迭代的鍵/值對(duì)。
d = dict((key, value) for (key, value) in iterable)
說明:
第一個(gè)k,v的()必須寫,第二個(gè)()可不寫。
2.6版本就是利用dict()函數(shù),函數(shù)的參數(shù)是一個(gè)嵌套的序列,序列的元素是元組。
2. 從Python2.7或者3以后,你可以直接用字典推導(dǎo)式語法。
d = {key: value for (key, value) in iterable} # k,v的()可以不寫
3. python2.7以上兼容兩種寫法,python2.6只能用第一種。
4. 可以用任何方式的迭代器(元組,列表,生成器..),只要可迭代對(duì)象的元素中有兩個(gè)值。
python2.7寫法
dict1 = {'one':1,'two':2,'three':3} dict2 = {v:k for k,v in dict1.items()} print dict2 輸出: {1: 'one', 2: 'two', 3: 'three'}
python2.6寫法
dict1 = {'one':1,'two':2,'three':3} dict3 = dict((v,k) for k,v in dict1.items()) print dict3 輸出: {1: 'one', 2: 'two', 3: 'three'}
例1:兩種生成式方式生成字典
In [1]: arr=['wd','18','nan'] In [2]: dict((k,v) for k,v in enumerate(arr)) Out[2]: {0: 'wd', 1: '18', 2: 'nan'} In [3]: {k:v for k,v in enumerate(arr)} Out[3]: {0: 'wd', 1: '18', 2: 'nan'}
例2:線上實(shí)例
arr = [{'id':1,'name':'lyz','age':26},{'id':2,'name':'pc','age':30}] print {str(x['id']):x['name'] for x in arr} 執(zhí)行結(jié)果: {'1': 'lyz', '2': 'pc'}
其他生成字典的方法
1. dict()函數(shù)
嵌套元組和嵌套類別可以直接通過dict命令轉(zhuǎn)為字典(嵌套內(nèi)部的元素只能是2個(gè))
>>> a = [(1, 'ab'), (2, 'bc')] >>> dict(a) {1: 'ab', 2: 'bc'} >>> result = ((1, 'ab'), (2, 'bc')) >>> dict(result) {1: 'ab', 2: 'bc'}
2. zip()函數(shù)
將多個(gè)元組或列表合并,合并規(guī)則是每個(gè)元組元素個(gè)數(shù)一致
In [1]: zip(('name','age','sex'),('wd','18','nan')) Out[1]: [('name', 'wd'), ('age', '18'), ('sex', 'nan')] In [2]: zip(['name','age','sex'],['wd','18','nan']) Out[2]: [('name', 'wd'), ('age', '18'), ('sex', 'nan')] In [3]: dict(zip(('name','age','sex'),('wd','18','nan'))) # 生產(chǎn)環(huán)境最常用 Out[3]: {'age': '18', 'name': 'wd', 'sex': 'nan'} In [4]: zip(['name','age','sex'],['wd','18','nan'],['11',22]) # 列表元素個(gè)數(shù)不一致,以最少對(duì)列表為準(zhǔn) Out[4]: [('name', 'wd', '11'), ('age', '18', 22)]
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python操作Access數(shù)據(jù)庫基本步驟分析
這篇文章主要介紹了Python操作Access數(shù)據(jù)庫基本步驟,結(jié)合實(shí)例形式詳細(xì)分析了Python針對(duì)access操作的具體步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-09-09基于python實(shí)現(xiàn)圖書管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了基于python實(shí)現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04python寫入csv時(shí)writerow()和writerows()函數(shù)簡單示例
這篇文章主要給大家介紹了關(guān)于python寫入csv時(shí)writerow()和writerows()函數(shù)的相關(guān)資料,writerows和writerow是Python中csv模塊中的兩個(gè)函數(shù),用于將數(shù)據(jù)寫入CSV文件,需要的朋友可以參考下2023-07-07Python?Flask框架實(shí)現(xiàn)小紅書圖片無水印解析下載
這篇文章主要為大家介紹了Python?Flask框架實(shí)現(xiàn)小紅書圖片無水印解析下載,需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Python利用QQ郵箱發(fā)送郵件的實(shí)現(xiàn)方法(分享)
下面小編就為大家?guī)硪黄狿ython利用QQ郵箱發(fā)送郵件的實(shí)現(xiàn)方法(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06