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

